【问题标题】:Netbeans C++ using MinGW and the libnoise library使用 MinGW 和 libnoise 库的 Netbeans C++
【发布时间】:2013-03-07 13:53:25
【问题描述】:

使用 netbeans 7.2 和最新版本的 MinGW(使用安装程序)我无法使用 libnoise 库。我正确地包含了头文件,自动完成确认了这一点,但是该库根本无法正常工作。有一个.lib 文件和一个.dll。我已经尝试了在项目 > 属性 > 构建 > 链接器下添加它们的所有可能组合,以及将 .dll 放在基础项目目录中。尽管如此,每当我尝试运行代码时,我仍然会遇到未定义的参考错误。有谁知道该怎么做?

【问题讨论】:

    标签: c++ netbeans mingw


    【解决方案1】:

    我知道可以将导入库文件 (*.lib) 与 MinGW 链接,但我仍然建议重新编译 libnoise。

    对于当前的 Makefile,这不是 very easy 并且可能会中断。因此,我编写了一个 CMake 脚本,它不仅适用于 Windows,而且应该适用于所有 CMake 支持的平台。除此之外,我还清理了目录结构。代码本身没有被触及,当你构建一个库时,它应该与当前的基本相同。

    libnoise on GitHub

    构建共享库后,您将拥有一个 libnoise.dll.alibnoise.dll 文件。然后将libnoise.dll.a 添加到链接设置中,并将 DLL 本身放在二进制文件旁边或工作目录中。

    【讨论】:

    • 衷心感谢您启动这个项目;如果没有可用的 CMake 或 make 文件,我会简单地放弃该库并继续使用其他东西,或者自己实现非常基础的东西。
    【解决方案2】:

    您必须链接 lib 文件(= 将其添加到链接器库)并将 dll 放到

    <project root>/dist/<...>/
    

    (您的 exe 文件所在的位置)。也不需要将dll添加到链接器中。

    您能否发布您收到的错误消息?

    【讨论】:

    • 每当我第一次添加名为“noise”的库时,这里是项目设置和输出:Settings output 因为实际文件名是 libnoise.lib 我更改了名称到“libnoise”并得到这个:settingsoutput
    • 你是如何添加 .lib 文件的?在链接器设置中使用 add library file... 添加它。
    • 我以前用过“添加库”。然而,在尝试这个时,我得到了同样的错误。 Settings Output 我认为考虑到我正在使用 MinGW 并且该库是在 Visual Studio 中编译的,编译器之间可能存在不兼容性。它将解释对“vtable”的未定义引用。我不确定如何解决这个问题。
    • 请清除附加库文件夹(现在有bin设置)然后重试。你有 mingw 版本的库吗?
    • 顺便说一句。你可以用mingw编译它;这可能会对您有所帮助:stackoverflow.com/questions/13280932/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2011-08-30
    • 1970-01-01
    • 2021-07-24
    • 2020-08-23
    相关资源
    最近更新 更多