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

标签 c++ netbeans shared-libraries mingw sfml

我知道存在类似的问题,我已经看到了它们,但在我决定必须问之前,在我的故障排除时间里没有找到它们。

我是 C++ 的新手,通过类(class)学习它。我的作业要求我使用第三方库:SFML .我当前的编码设置是使用带有 C++ 插件的 Netbeans,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 .

在“项目”-> 属性-> 构建-> 链接器中,我添加了 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"

最后,我确保在“链接器”部分的“库”部分下分别手动添加每个库。也按照上述教程的建议。

做完这一切后,我就可以写出一个标准的程序,可以编译运行了。但是,一旦我开始包含 SFML 库的 header ,有时代码会生成但不会运行,有时它根本就不会一起生成。

以这个示例代码为例:

#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 添加到项目属性中“运行”下的环境部分的解决方案,但没有成功。

考虑到我的情况,没有其他解决方案,我感到被困住了。非常感谢任何帮助。

谢谢, 利亚姆

最佳答案

您可能应该将 -static 传递给链接器参数,以防止链接此库的动态版本,或者当 “我确保在库部分下单独手动添加每个库时链接器部分”您不小心添加了库的动态版本,而不是仅添加静态版本。

关于c++ - 使用第三方库 : SFML 时 Netbeans 无法加载共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53316551/

相关文章:

c++ - Win7 对话框崩溃

c++ - 将 C 程序的值发布到网页

java - GitHub、当前 Netbeans 6.9 项目和 Git 插件

c - 使用同时加载另一个共享库的 JNI 加载动态 C 共享库

shared-libraries - ELF共享库

java - 我不知道如何安装部署在 heroku 上的应用程序所需的 libXtst.so.6 库

java - 如何避免在 Java 和 native C++ 代码之间复制数据

c++ - Excel国际日期格式

java - 分发 Java 控制台程序

c - 将 fprintf 输出重定向到端口