VS2008 C# winform 64位程序动态调用VC++ 64位DLL LoadLibrary成功 但是GetProcAddress返回值为0

如果通过 Vs MFC 中调用这个64DLL 用同样的方式动态调用获取函数地址成功,就不知道C#里面为什么返回0。通过Marshal返回值为126. 64DLL是 通过VC6.0建立的程序然后用vs2010自动转换的然后编译生成的64位的DLL.2008建的也不行

2个回答

C#调用DLL一般类似这样写的:
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
static extern int MessageBox(int hWnd, string msg, string caption, int type);

qq_39570852
qq_39570852 因为有需求动态调用,这个在64位电脑上运行32程序动态调用是没有问题的。但是64位电脑上编译成64位动态调用64位DLL就会出现这种调用失败的情况
7 个月之前 回复

找到问题了,64平台 LoadLibrary 返回值在C#中要定义成int 64 否则长度不够

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问