无法找到入口点(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(); 
+0

@谢谢,为什么我需要`extern“C”`前面的任何理由? – Graviton 2010-12-05 10:40:08

如果你用C++编译器使用extern "C"出口或增加一个DEF文件到指定的出口名称编译。 此外__stdcall可能是必要的