我有一个 32 位和一个 64 位的可执行文件。两者都加载相同位的 DLL,就像在 64 位可执行文件中加载 64 位 dll 一样。无论如何,32 位 DLL 完美运行,它创建一个线程并弹出一个 hello world 消息框。然而,64 位 DLL,那段代码永远不会执行。这就像 createthread 失败了。
case DLL_PROCESS_ATTACH:
myFunc();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void myFunc()
{
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&MyThread, NULL, 0, NULL);
}
DWORD WINAPI MyThread(LPVOID param)
{
MessageBoxA(0, "HELLO 64", 0,0);
ExitThread(0);
}
这些是 DLL 中的一些片段。我已经用谷歌搜索了,我能想到的只是堆栈对齐失败了吗?如果这是原因,我该如何正确调用 CreateThread 使其工作?如果这不是原因,有谁知道可能是什么问题?
我将非常感谢任何帮助,在此先感谢!