2010-12-05 62 views
2

這是一個類似的問題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後面的一些亂碼。

這很令人費解。任何想法?

回答

4

嘗試寫

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

@謝謝,爲什麼我需要`extern「C」`前面的任何理由? – Graviton 2010-12-05 10:40:08

0

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

相關問題