【问题标题】:How to import external dll library to Borland C++ 6?如何将外部 dll 库导入 Borland C++ 6?
【发布时间】:2009-07-01 16:47:17
【问题描述】:

我在 Borland C++ 6 中构建了一个应用程序,我想导入外部的非 Borland 库(确切地说,FFTW,http://www.fftw.org)。

我已经下载了 fftw dll 文件,使用 implib.exe 程序构建了一个 Borland 已知的 lib 文件,在源代码中包含 fftw.h 并将 fftw.h 复制到 Borland/include,将 fftw.lib 复制到 Borland/lib 和.h、.dll 和 .lib 文件到我的项目文件夹中。

不幸的是,我收到了几个链接器错误,它们声称:

从{源文件的名称}引用的未解析的外部“{FFTW 函数的名称}”

我做错了什么?

【问题讨论】:

    标签: c++ import borland-c++


    【解决方案1】:

    我只是从一个类似的故事中讲述我是如何设法让它工作的......

    有一个与 Delphi 7、VB.NET 和 Java 一起工作的 DLL(正在成功导入)。我想用 Borland C++ Builder 6 制作一个程序。我有函数原型和对这些语言进行导入的确切声明。合理吗?

    我认为这很容易,但我陷入了许多死胡同,没有成功,一步一步的“盲目”指南对我不起作用。 IDE 或命令输出也无济于事。

    几天后我尝试了(来自问题 4599357,尽管 DLL 不在 Visual C++ 中):

    1. 使用“implib”没有“-a”和
    2. 有这样声明的原型:

    extern "C" __declspec(dllimport) __stdcall int someDll_someFunction(someTypes someArgs, ...);

    注意正常的函数原型在最后。如果您有“普通”原型,只需在源代码或头文件之前添加“extern "C" __declspec(dllimport) __stdcall”。 :) 而且我只有返回“int”的函数,这就是我把“int”放在那里的原因。

    【讨论】:

      【解决方案2】:

      我认为您只缺少一步...将 implib 创建的 .lib 文件添加到您的项目中。

      【讨论】:

        【解决方案3】:

        您确定 Borland 正在对外部函数进行正确的名称修改,并且标头已被 extern "c" {} 包围吗?您确定 Borland 确实在尝试链接 .lib 文件吗?确保编译器设置了详细选项。

        如果这不起作用,为什么不从源代码构建 FFTW 而不是使用 DLL?

        【讨论】:

        • extern "c" 是什么意思?
        • Extern "c" 告诉链接器寻找用 C 而不是 C++ 编译的函数。因为您使用的是 C++ 编译器,所以链接器可能正在寻找错误的(损坏的)函数名。 wiki.answers.com/Q/What_is_the_use_of_extern_in_C
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 2013-07-25
        • 2016-01-22
        • 1970-01-01
        • 2019-03-24
        相关资源
        最近更新 更多