问一个奇怪的问题,为什么我用C++生成的DLL文件,在win8系统下用C#调用正常,换XP就出问题呢?
C#的代码
class C_strOpDll
{
[DllImport("CXstr.dll")]
public static extern void myTest();
}
public Form1()
{
InitializeComponent();
MessageBox.Show("00");
C_strOpDll.myTest();
MessageBox.Show("11");//这里换XP系统运行不到这里,win8能到这里
}
c++代码
extern "C" __declspec(dllexport) void myTest()
{
MessageBox(NULL,TEXT("OK"),TEXT("test ij"),MB_OK);//XP没有到这步
}
//另外我在DLL入口函数内也加了MSGBOX
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
MessageBox(NULL,TEXT("123"),TEXT("123"),MB_OK);//XP也没到这里
break;
}
return TRUE;
}
在XP下运行除了弹出个对话框“00”(我自己设的)外,接着就弹出“遇到问题需要关闭”的提示,请问这是为什么? win8 c# xp
[解决办法]
是不是你的dll编译成64bit的了。