Связывание с DLL в C/C#
Я пытался связаться с сторонней DLL. Я пытался тремя разными способами: компилировать C в Cygwin, компилировать C++ в Visual Studio и компилировать C# в Visual Studio. Каждый раз, когда я компилирую программы, я получаю следующие ошибки:
Cygwin: неопределенная ссылка на '__imp__IEC61850_Create'
Visual S: LNK2019: неразрешенный внешний символ '__imp__IEC61850_Create'
Как вы, наверное, поняли, я пытаюсь вызвать функцию 'IEC61850_Create', которая находится в DLL, но она всегда отображается с ошибками с префиксом __imp__. Поскольку DLL является сторонней, я не могу просмотреть источник. В других местах, где я искал, люди обычно говорят о сопроводительном файле.o или.lib. В этом случае единственный ресурс, который у меня есть, это.dll.
Кто-нибудь еще испытывал что-то подобное или знает, как я могу связаться с библиотекой? Я могу предоставить пример кода, если это необходимо.
Благодарю.
1 ответ
Вам действительно нужно ссылку на .lib
файл, потому что только он имеет __imp__
заглушки, необходимые для статического связывания.
Тем не менее, что вы можете сделать, это создать .def
файл и использование lib
превратить его в .lib
файл.
В качестве альтернативы вы можете создать фиктивный проект с пустыми функциями для создания .dll
и .lib
файл, ссылка на .lib
файл, но затем использовать реальный .dll
с актуальной программой.
Для получения дополнительной информации вы можете прочитать статью Microsoft KB 131313.