无法找到入口点(CPP)
问题描述:
这是一个类似的问题this one。无法找到入口点(CPP)
我想从C++导出一个简单的函数,由C#通过PInvoke调用。这是我的函数的定义:
int fnValue()
{
return 42;
}
这是.h
文件中导出定义:
__declspec(dllexport) int fnValue();
这是我的PInvoke功能:
[DllImport("WhatDll.dll")]
public static extern int fnValue();
简单,对不对?但我有一个
System.EntryPointNotFoundException: 无法找到fnValue条目 '命名 点 '' 在DLL“WhatDll.dll'
我使用DUMPBIN检查里面有什么WhatDll
,和这就是我:
00000000特性4CFB5C95 时间日期戳孙十二月11 17时34分13秒 0.00版 1开始的序号基 4数量的功能 4号名称
序提示RVA名称
1 2 00011014 [email protected]@YAHXZ = @ILT+15([email protected]@YAHXZ)
注意这里是函数名fnValue
后面的一些乱码。
这很令人费解。任何想法?
答
尝试写
extern "C"__declspec(dllexport) int fnValue();
答
如果你用C++编译器使用extern "C"
出口或增加一个DEF文件到指定的出口名称编译。 此外__stdcall
可能是必要的
@谢谢,为什么我需要`extern“C”`前面的任何理由? – Graviton 2010-12-05 10:40:08