Visual Studio: игнорировать неопределенные ссылки в общих библиотеках - PullRequest
3 голосов
/ 27 января 2011

Я хочу скомпилировать проект, который использует общую библиотеку, но у меня нет доступа к исходным файлам lib. У меня, однако, есть оригинальный интерфейс ...

Все, что я в основном хочу, - это чтобы компилятор искажал имена символов и т. Д., Поэтому мне не нужно вручную вызывать GetProcAddress ...

Однако Visual Studio жалуется на неопределенные ссылки (duh), когда я не связываюсь с разделяемой библиотекой .... С GNU LD я мог использовать 'allow-shlib-undefined', но, к сожалению, я должен использовать MSVC ++. .. Есть ли что-то похожее?

редактирование:

Конечно, я мог бы создать поддельную (proxy) dll, создать заглушки для всех методов, найденных в моем интерфейсе, связать их и затем загрузить исходную dll. Хотя я не знаю, является ли это лучшим решением ...

edit2:

Похоже, я могу просто экспортировать символы и сгенерировать файл lib: http://www.coderetard.com/2009/01/21/generate-a-lib-from-a-dll-with-visual-studio/

Сначала попробую и доложу.

1 Ответ

3 голосов
/ 29 января 2011

Попробуйте исследовать "Edll для Windows" ( home ) реализация:

EnhancedDLL - иметь плагины и библиотеки с неопределенными символами

Он находит 4 решения для преодоления ограничений DLL: "Обычное решение" , "Решение sub-DLL" , "Решение .def & .a" и "Решение edll" .

...