背景:这几天在学cmake,然后
编译一个极为简单的工程,当用
MinGW编译后,报“应用程序正常初始化(0xC0000005)
失败”,而用 cmake 生成的nmake files 和 msvc project 工作都正常。用qmake的话,mingw编译的程序也正常。而且对其它例子,无法这个问题重现。
反复确认,试验,最后找到问题根源:盘符大小写导致问题(大写,生成的程序报错;小写,程序正常)
- -L"E:\Qt\4.7.0-beta2\lib"
- -L"e:\Qt\4.7.0-beta2\lib"
我在自己的 Vista 系统和 xp sp3 系统测试,问题均可重现(采用QtCreator自带的Mingw4.4, Qt版本Qt4.7beta2),以下是测试例程:
程序代码:保存为main.cpp
- // main.cpp
- #include <QtCore/QCoreApplication>
- #include <QtCore/QDebug>
- int main(int argc, char ** argv)
- {
- QCoreApplication app(argc, argv);
- qDebug()<<"Hello World!";
- return 0;
- }
makefile文件:和main.cpp放在同目录下,命名为 Makefile
- CXX = g++
- DEFINES = -DQT_DLL -DQT_CORE_LIB
- INCPATH = -I"e:\Qt\4.7.0-beta2\include"
- LIBS = -L"e:\Qt\4.7.0-beta2\lib"
- main: main.o
- $(CXX) -o main main.o $(LIBS) -lQtCore4
- main.o: main.cpp
- $(CXX) -c $(INCPATH) -o main.o main.cpp -Wall -DUNICODE
注意:两个$符号前面都是一个Tab,如果拷贝后变成空格和Tab消失,请手动改正。并将上面出现的两处路径改为你的Qt所在的路径
这时运行make 即可生成可执行程序 main.exe,你可以运行该程序看看是否正常
然后,你可将其中的盘符从小写改成大写,删除main.o,重新运行一次 make 生成新的 main.exe
请帮忙测试一下,两次生成的main.exe 是否都可正常运行,并告知qt的版本和mingw的版本。
我不清楚是Mingw还是Qt导致的这个问题,因为我用Mingw和标准的
C++无法重现这个错误。
谢谢
2010.08.01
源码
mingw_qt.zip (1 K) 下载次数:1 [ 此帖被dbzhang800在2010-08-01 17:33重新编辑 ]