我知道存在类似的问题,我已经看过这些问题,在我决定必须询问之前,在排除故障的过程中,他们并没有运气。
我是C ++的新手,通过一门课学习它。我的作业要求我使用第三方库:SFML。我当前的编码设置是将Netbeans与C ++插件Windows 10一起使用。以前,我使用Cygwin编译器。 SFML声称它需要与编译时使用的其中一个编译器的确切版本一起使用,因此我选择了MinGW 7.3.0,此后已安装并继续尝试。
在“项目”->“属性”->“构建”->“ C ++编译器”中,我添加了SFML的includes目录:
“ C:/ Users / Drayux / Documents / Coding / NetBeans /第三方库/SFML-2.5.1/include”
在这里,在->预处理程序定义中,我还添加了:
SFML_STATIC
根据教程here的建议。
在“项目”->“属性”->“构建”->“链接器”中,我添加了SFML的lib和bin目录:
“ C:/ Users / Drayux / Documents / Coding / NetBeans /第三方库/SFML-2.5.1/bin”
“ C:/ Users / Drayux / Documents / Coding / NetBeans /第三方库/SFML-2.5.1/lib”
最后,我确保手动在链接器部分的库部分下分别添加每个库。也如上述教程所建议。
完成所有这些之后,我可以编写一个可以编译并运行的标准程序。但是,一旦我开始包含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的解决方案,但是没有运气。
考虑到我的情况,没有其他解决方案,我感到束手无策。任何帮助将不胜感激。
谢谢, 利亚姆
答案 0 :(得分:0)
您可能应该将-static
传递给链接器参数,以防止链接此库的动态版本,或者在“我确保手动在链接器部分的库部分下分别添加每个库” 您还意外添加了库的动态版本,而不仅仅是添加了静态版本。
答案 1 :(得分:0)
经过许多小时甚至更晦涩难懂之后,我才能够成功运行基本的SFML程序并渲染基本的测试窗口。
我知道我还有很多东西要学,但是解决方案的解决方法是共享库(.dll文件)的位置。
我以为在链接器配置中引用它们可以完成此工作,但是.a库似乎在已编译程序的本地目录中查找它们。截至目前,我仍不知道如何更改此设置。
因此,该解决方案是将文件系统中的.dll文件手动移动到已编译程序的目录中,对于我而言:
C:\ Users \ Drayux \ Documents \ Coding \ NetBeans \ SFML Test \ dist \ Debug \ MinGW-Windows
希望这对以后解决我的问题的人有帮助!