日期:2014-05-17  浏览次数:20635 次

问一个奇怪的问题,为什么我用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的了。