【发布时间】:2010-07-18 16:39:17
【问题描述】:
也许我只是又一次停电了,但是,这一行给我带来了很多麻烦:
FILE *fp = fopen("data/world.data", "rb");
当使用 GCC 编译时,这在 Linux 下可以正常工作。但是当我用 Visual Studio 编译它时,它崩溃了。 fp 始终为NULL。 BIN 和 EXE 都在完全相同的目录中。现在,更疯狂的是,当我在 Linux 下使用 Wine 运行 EXE 时……它……可以工作……
我完全不知道这里发生了什么。也许这对我来说是一个非常愚蠢的错误,但我无法让这个东西在 Windows 下运行:/
另外,我还有一个运行良好的程序,数据文件也包含在一个名为 data 的子目录中。
编辑:
说清楚/ NOR `\ * 都行不通。
编辑 2:
好的,我已经放弃了,也许有人想弄清楚它很有趣,这里是包含 EXE、VS 调试数据等的 ZIP:
https://dl.dropbox.com/u/2332843/Leaf.zip
编辑 3:
用 CodeBlocks 和 MinGW 编译它,就像一个魅力。猜猜它必须与 MSVC 或 VS 中的项目设置有关。
【问题讨论】:
-
尝试将“data/world.data”更改为“data\\world.data”
-
我应该把它作为答案发布... -_-
-
@Justin Ethier:阅读msdn.microsoft.com/en-us/library/77859s1t(v=VS.71).aspx
-
你有没有忘记在项目配置属性中设置“工作目录”? Visual Studio 在调试/发布文件夹中创建 *.exes,并默认从那里运行(当您从 Visual Studio 启动应用程序时)它们。 IE。如果您的“数据”在其他地方,您的 exe 将无法找到它。您可以将“工作目录”设置为 $(ProjectDir) 或 $(SolutionDir) 之类的东西,这样会很方便。
-
无论您在代码中做什么:
fopen("data/world.data");都能完美运行,而且很可能不是崩溃的原因,恕我直言。