2012-11-08 59 views
1

我一直试图链接到第三方DLL。我尝试了3种不同的方式:在Cygwin中编译C,在Visual Studio中编译C++并在Visual Studio中编译C#。每次我编译的程序,我收到以下错误:在C/C中与DLL链接#

Cygwin的:未定义的引用“__imp__IEC61850_Create”

视觉S:LNK2019:解析外部符号“__imp__IEC61850_Create”

正如你可能已经聚集,我我试图调用在DLL中找到的函数'IEC61850_Create',但它总是以'__imp__'前缀出现错误。由于DLL是第三方,我无法查看源代码。在我搜索过的其他地方,人们通常会谈论伴随的.o或.lib文件。在这种情况下,我唯一的资源就是.dll。

有没有其他人经历过这样的事情,或知道我如何链接到图书馆?如果需要,我可以提供示例代码。

谢谢。

回答

1

您确实需要链接到.lib文件,因为只有它有用于静态链接的__imp__存根。

但是,您可以做的是创建一个.def文件并使用lib将其转换为.lib文件。

或者您可以创建一个空的功能虚拟项目,以创建一个.dll.lib文件,链接到.lib文件,但随后使用真正的.dll与实际的程序。

欲了解更多信息,你可以阅读微软KB文章131313