使用第三方库时,Netbeans无法加载共享库:SFML

问题描述 投票:0回答:2

我知道存在类似的问题,我已经看过它们了,在我的故障排除时间里我没有运气,我决定要问一下。

我是C ++的新手,通过课堂学习它。我的任务要求我使用第三方库:SFML。我目前的编码设置是使用Netbeans和C ++插件,Windows 10.以前我使用过Cygwin编译器。 SFML声称它要求它与其编译的编译器的确切版本一起使用,所以我选择了MinGW 7.3.0,我已经安装并继续我的尝试。

在“Project” - > Properties - > Build - > C ++ Compiler中,我添加了SFML的includes目录:

“C:/ Users / Drayux / Documents / Coding / NetBeans / Third Party Libraries / SFML-2.5.1 / include”

在这里,在 - >预处理器定义中我还添加了:

SFML_STATIC

正如教程here所建议的那样。

在“Project” - > Properties - > Build - > Linker中,我添加了SFML的lib和bin目录:

“C:/ Users / Drayux / Documents / Coding / NetBeans / Third Party Libraries / SFML-2.5.1 / bin”

“C:/ Users / Drayux / Documents / Coding / NetBeans / Third Party Libraries / SFML-2.5.1 / lib”

最后,我确保在Linker部分的Libraries部分下单独手动添加每个库。也如上面的教程所示。

完成所有这些后,我可以编写一个编译和运行的标准程序。但是,一旦我开始包含SFML库的头文件,有时代码构建,但不运行,有时它根本不会一起构建。

以此示例代码为例:

#include <iostream>
using namespace std;

#include <SFML/Graphics.hpp>
using namespace sf;

int main() {
    cout << "Test output line" << endl;

    RenderWindow window(VideoMode(200, 200), "Hello there!");
    //CircleShape shape(100.f);

    return 0;
}

当我尝试在上述配置下构建它时,构建成功,但运行不成功。这是两个控制台。

建立:

cd 'C:\Users\Drayux\Documents\Coding\NetBeans\Lab7C'
C:\Program Files\MinGW\MSYS\bin\make.exe -f Makefile CONF=Debug
"/C/Program Files/MinGW/MSYS/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/c/Users/Drayux/Documents/Coding/NetBeans/Lab7C'
"/C/Program Files/MinGW/MSYS/bin/make.exe"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/lab7c.exe
make.exe[2]: Entering directory `/c/Users/Drayux/Documents/Coding/NetBeans/Lab7C'
make.exe[2]: `dist/Debug/MinGW-Windows/lab7c.exe' is up to date.
make.exe[2]: Leaving directory `/c/Users/Drayux/Documents/Coding/NetBeans/Lab7C'
make.exe[1]: Leaving directory `/c/Users/Drayux/Documents/Coding/NetBeans/Lab7C'

BUILD SUCCESSFUL (total time: 3s)

跑:

C:/Users/Drayux/Documents/Coding/NetBeans/Lab7C/dist/Debug/MinGW-Windows/lab7c.exe: error while loading shared libraries: sfml_window-d-2.dll: cannot open shared object file: No such file or directory

RUN FAILED (exit value 127, total time: 74ms)

我已经尝试过将LD_LIBRARY_PATH添加到项目属性中Run下的环境部分的解决方案,没有运气。

考虑到我的情况,没有其他解决方案,我感到被困。任何帮助是极大的赞赏。

谢谢,利亚姆

c++ netbeans shared-libraries mingw sfml
2个回答
0
投票

您应该将-static传递给链接器参数以防止链接此库的动态版本,或者“我确保在”链接器“部分的”库“部分下单独手动添加每个库”“您意外地将库的动态版本添加为好吧,而不是只添加静态版本。


0
投票

经过几个小时甚至更多的猥亵,我能够成功运行一个基本的SFML程序并渲染一个基本的测试窗口。

我知道我还有很多需要学习的东西,但我的解决方案的修复方法是我的共享库(.dll文件)的位置。

我曾假设在链接器配置中引用它们会完成这项工作,但似乎.a库正在编译程序的本地目录中查找它们。截至目前,我仍然不知道如何改变这一点。

因此,解决方案是手动将文件系统中的.dll文件移动到已编译程序的目录中,在我的情况下:

C:\ Users \ Drayux \ Documents \ Coding \ NetBeans \ SFML Test \ dist \ Debug \ MinGW-Windows

希望这可以帮助任何人解决我的问题!

© www.soinside.com 2019 - 2024. All rights reserved.