这是一个类似的问题这一个。
我想从 C++ 导出一个简单的函数,由 C# 通过 PInvoke 调用。这是我的函数定义:
int fnValue()
{
return 42;
}
Run Code Online (Sandbox Code Playgroud)
这是.h文件中的导出定义:
__declspec(dllexport) int fnValue();
Run Code Online (Sandbox Code Playgroud)
这就是我 PInvoke 函数的方式:
[DllImport("WhatDll.dll")]
public static extern int fnValue();
Run Code Online (Sandbox Code Playgroud)
很简单吧?但我得到了一个
System.EntryPointNotFoundException:无法在 DLL“WhatDll.dll”中找到名为“fnValue”的入口点
我使用 dumpbin 检查里面WhatDll有什么,这就是我所拥有的:
00000000 特征 4CFB5C95 时间日期戳 Sun Dec 05 17:34:13 2010 0.00 版本 1 序数基数 4 函数数 4 名称数
序数提示 RVA 名称
Run Code Online (Sandbox Code Playgroud)1 2 00011014 ?fnValue@@YAHXZ = @ILT+15(?fnValue@@YAHXZ)
请注意,函数名称后面有一些乱码fnValue。
这很令人费解。任何的想法?
试着写
extern "C"__declspec(dllexport) int fnValue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1076 次 |
| 最近记录: |