1

我一直在尝试链接到第三方 DLL。我尝试了 3 种不同的方法:在 Cygwin 中编译 C,在 Visual Studio 中编译 C++,在 Visual Studio 中编译 C#。每次编译程序时,都会出现以下错误:

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

Visual S:LNK2019:未解析的外部符号“__imp__IEC61850_Create”

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

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

谢谢。

4

1 回答 1

1

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

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

或者,您可以创建一个带有空函数的虚拟项目来创建一个.dll和一个.lib文件,链接到该.lib文件,然后.dll在实际程序中使用真实的项目。

有关详细信息,您可以阅读 Microsoft 知识库文章131313

于 2012-11-08T11:43:42.043 回答