从c#调用x64 c++ DLL,进程挂起(更新)

本文关键字:挂起 进程 更新 DLL 调用 x64 c++ | 更新日期: 2023-09-27 18:17:03

我正在将托管c++ DLL (MecDll)从x86移植到x64。c#测试代码:

[DllImport("test.dll"), System.Security.SuppressUnmanagedCodeSecurity]
public static extern int getseven();
[DllImport("MecDll.dll"), System.Security.SuppressUnmanagedCodeSecurity]
public static extern int getsevenmec();
Console.WriteLine("{0}" , getseven() );
Console.WriteLine("{0}" , getsevenmec() );
test.dll中的代码:
extern "C"
{
__declspec(dllexport) int __stdcall getseven() {
return 7;
}
}

添加到MecDll.dll的代码:

extern "C"
{
__declspec(dllexport) int __stdcall getsevenmec() {
return 8;
}
}

当我运行测试时,我从test.dll中打印出7,然后进程只是挂在一个黑色窗口上。我在进程资源管理器中看到dll被加载了。

测试c#代码是在任何CPU和DLL的x64下编译的。

任何想法?

从c#调用x64 c++ DLL,进程挂起(更新)

这是一个静态变量的构造函数,在构造函数内部,套接字和定义的负数之间有一个==,在负数之前添加(DWORD)到定义解决了这个问题。由于本