【问题标题】:Linking with DLL in C/C#在 C/C# 中与 DLL 链接
【发布时间】:2012-11-08 11:13:54
【问题描述】:

我一直在尝试链接到第三方 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。

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

谢谢。

【问题讨论】:

    标签: c dll linker imp


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多