前提:QT写的界面,转换成VC可调用的dll。
问题1:编译通过,但出现dll装载句柄为NULL,GetLastError()返回126,代码如下:
SetCurrentDirectory("E:\\"); //ABC.dll目录为E:\ABC.
HMODULE handle = LoadLibrary("ABC.dll"); //ABC.dll为QT生成的库
int m=0;
if (handle == NULL){
m=GetLastError(); //m=126
if(m)
return ;
}
经查:如果遇到LoadLibray,返回错误代码为126的时候,要考虑缺少调用库的依赖库,于是将QT的依赖库都拷贝到E:\下后。
问题2:出现窗口:This application failed to start because it could not find or load the Qt platform plugin "windows".
reinstalling the application may fix this problem.
m=998
将代码改为:
HMODULE handle = LoadLibrary("ABC.dll"); //ABC.dll为QT生成的库
int m=0;
if (handle == NULL){
m=GetLastError();
if(m)
return ;
}
将所有的库都放到VC debug下exe同一目录下,程序运行正常。
总结:调用QTdll后,生成的exe与QT 所有依赖库都得一个目录下才能正确运行。