无法找到入口点(cpp)

时间:2010-12-05 10:15:43

标签: .net c++ interop

这是与this one类似的问题。

我想从C ++导出一个简单的函数,由C#通过PInvoke调用。这是我的函数定义:

 int fnValue()
{
    return 42;
}

这是.h文件中的导出定义:

__declspec(dllexport)  int fnValue();

这就是我实现该功能的方式:

    [DllImport("WhatDll.dll")]
    public static extern int fnValue();

简单,对吧?但我得到了一个

  

System.EntryPointNotFoundException:   无法找到一个名为的入口点   DLL中的'fnValue'“WhatDll.dll'

我使用dumpbin来检查WhatDll里面的内容,这就是我所拥有的:

  <00> 00000000特性4CFB5C95   时间日期戳Sun Dec 05 17:34:13   2010        0.00版本           1个序数基数           4个功能           4个名字

     

序数提示RVA名称

   1    2 00011014 ?fnValue@@YAHXZ = @ILT+15(?fnValue@@YAHXZ)

请注意,函数名称fnValue背后有一些乱码。

这非常令人费解。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

尝试写

extern "C"__declspec(dllexport)  int fnValue();

答案 1 :(得分:0)

如果使用c ++编译器进行编译,请使用extern "C"导出或添加.def文件以指定导出名称。 另外__stdcall可能是必要的