Связывание с 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.

Другие вопросы по тегам