繁体   English   中英

如何在其他计算机上运行使用PDCurses的C ++程序?

[英]How to run C++ program that use PDCurses on other computers?

我最近开始在我正在开发的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。 尝试重新安装程序以解决此问题。*

另一个选择是获取PDCurses的源并将其编译为静态库。 这样,您就不必卷入DLL Hell。

将其编译为C库而不是C ++库,您应该一切顺利。

您需要包括所有与之链接的动态库。 尽管IIRC许可不多,但请小心使用MinGW。

如果您具有MinGW Shell,则应该有一个“ ldd”命令。 尝试在game.exe上运行它,它将告诉您运行程序所需的库。 您需要将它们全部包含在exe中。

如果要尝试消除依赖关系的噩梦,可以在gcc link命令中使用static linking(-static)选项。 如果您没有安装库的静态版本,则可能无法实际执行此操作。 这还有其他含义-您的exe会更大,并且操作系统的共享共享页面代码将无法工作,因为它无法告诉您与其他应用共享的部分(DLL代码)。 实际上,您的应用程序将使用更多的内存,尽管它可能微不足道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM