Создание и создание ссылок на файл .lib, сгенерированный из старого файла DLL - PullRequest
2 голосов
/ 01 сентября 2011

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

Я нашел DLL-файл, который, как мне кажется, использует драйвер из этого пакета программного обеспечения с тем же именем, что и файл .lib и .h. Я следовал этим инструкциям: http://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/

После этого я смог создать файл .lib, который, насколько я знаю, содержит те же функции, что и мой файл .h (промежуточный файл DEF показывает это). Первый проект смог успешно скомпилировать и связать его, но второй мой проект, использующий библиотеку, созданную первым проектом, не может связать жалобы на неразрешенные символы для функций в DLL, которую я пытаюсь использовать:

error LNK2019: unresolved external symbol _ncb_receive_wait@12 referenced in function "public: int __thiscall PLC::Write(unsigned short,void *,unsigned short)" (?Write@PLC@@QAEHGPAXG@Z)

Я пытаюсь понять, возможно ли это вообще сделать? (Получить старый файл DLL, сгенерировать из него библиотеку, создать ссылку на него и использовать файл DLL?)

Ответы [ 2 ]

1 голос
/ 24 января 2013

Я знаю, что этот ответ слишком запоздал для первоначального вопроса, но, надеюсь, он может помочь другим с похожей проблемой, ищущей решение:

У меня была похожая проблема, связанная со старой DLL из Visual C ++. Я также пошел по пути создания файла def, а затем создал новый файл lib из этого файла def. Затем, чтобы устранить ошибку компоновки в Visual C ++ при попытке связать с искаженным именем функции, я вручную отредактировал раздел EXPORTS файла def, чтобы создать псевдоним имени функции, в соответствии с:

_ncb_receive_wait@12 = ncb_receive_wait
0 голосов
/ 01 сентября 2011

Вы можете попробовать более автоматизированный подход, предложенный MingW , чтобы избежать пропуска функции или других опечаток.

В противном случае, возможно, заголовок и двоичный файл несовместимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...