我最近开始在我正在开发的C ++游戏中使用PDCurses。当我在自己的机器(windows)上编译程序并运行.exe时,一切正常。
当我将.exe带到没有PDCurses的其他计算机上并尝试运行它时,我收到有关丢失pdcurses.dll文件的错误。
在网上进行了一些研究之后,我发现包含.dll文件和.exe应该会让它运行但是对我来说不起作用。
这是我使用MinGW编译程序的方法:g++ game.cpp -o game -lpdcurses
所以我的问题是,如何让这个程序在没有PDCurses设置的计算机上运行,还有一种方法可以通过将.exe与系统需要的任何其他文件相结合来实现这一点。运行程序?我还读到你可以做某种静态链接,但到目前为止我还没找到办法做到这一点。
提前感谢您的帮助。
注意:如果重要,请按照本教程设置PDCurses:http://comptb.cects.com/1848-adding-pdcurses-to-mingw 不确定这是否是最好的方法,但我能够编译并运行在我的计算机上使用pdcurses的C ++代码。
很抱歉没有发布确切的消息。他们在这里:
当我没有包含pdcurses.dll文件和可执行文件时,我得到的第一个:
程序无法启动,因为您的计算机缺少pdcurses.dll。请尝试重新安装该程序以解决此问题。
我加入pdcurses.dll后得到的第二个:
*程序无法启动,因为您的计算机缺少libcc_s_dw2-1.dll。尝试重新安装该程序以解决此问题。*
答案 0 :(得分:0)
您需要包含与之关联的所有动态库。小心许可,虽然IIRC没有太多会让你感到害怕MinGW。
如果你有MinGW shell,应该有'ldd'命令。尝试在game.exe上运行它,它会告诉你运行程序需要哪些库。你需要将它们全部包含在exe中。
如果您想尝试删除依赖性噩梦,可以使用gcc link命令的静态链接(-static)选项。如果您没有安装库的静态版本,则可能无法实际执行此操作。这有其他含义 - 你的exe会更大,操作系统的共享共享页面代码将无法工作,因为它无法分辨你与其他应用程序共享的部分(DLL代码)。实际上,您的应用程序将使用更多内存,尽管它可能无关紧要。
答案 1 :(得分:0)
另一种选择是将源代码发送到PDCurses并将其编译为静态库。这样你就不必参与DLL Hell。
将其编译为C库而不是C ++库,你应该好好去。