我正在嘗試在C#項目中使用C++非託管dll,並且在嘗試調用一個表明無法找到入口點的函數時出現錯誤。未找到入口點例外
public class Program
{
static void Main(string[] args)
{
IntPtr testIntPtr = aaeonAPIOpen(0);
Console.WriteLine(testIntPtr.ToString());
}
[DllImport("aonAPI.dll")]
public static extern unsafe IntPtr aaeonAPIOpen(uint reserved);
}
下面是該函數的DUMPBIN:
5 4 00001020 [email protected]@[email protected]
我改變了DLL導入到[DllImport("aonAPI.dll", EntryPoint="?aaeonAPIOpen")]
和[DllImport("aonAPI.dll", EntryPoint="_aaeonAPIOpen")]
和沒有運氣。
+1,沒有意識到你可以做到這一點。這種方法有多安全?損壞的名稱是從構建變爲構建還是跨構建相同的代碼是否一致? – JaredPar 2010-08-18 18:36:27
@Jared:這個修改完全基於C++函數的聲明。這就是爲什麼undname.exe可以工作。只要聲明不變,它就是穩定的。這使得它比外部的「C」聲明更安全。 – 2010-08-18 18:59:20