我努力學習的P/Invoke,所以我創建了C++無法調用C++ DLL在C#中,當找到一個切入點
KingFucs.h一個簡單的DLL:
namespace KingFuncs
{
class KingFuncs
{
public:
static __declspec(dllexport) int GiveMeNumber(int i);
};
}
KingFuns.cpp :
#include "KingFuncs.h"
#include <stdexcept>
using namespace std;
namespace KingFuncs
{
int KingFuncs::GiveMeNumber(int i)
{
return i;
}
}
所以它編譯,然後我複製這個DLL到我的WPF的debug文件夾中,用代碼:
[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int GiveMeNumber(
int i
);
,把它在按一下按鈕:
private void Button_Click(object sender, RoutedEventArgs e)
{
int num = GiveMeNumber(123);
}
但它給了我異常:
無法找到DLL 'KingFuncDll.dll' 名爲 'GiveMeNumber' 的切入點。
真的....我做了什麼錯...它顯然能夠找到DLL,否則會是另一個例外。但我的方法名稱完全一樣....我想不出其他原因。
請在這裏看到我的問題:http://stackoverflow.com/questions/9849541/writing-c-intended-to-be-called-from-c – 2012-04-11 16:01:48
我解決了同樣的問題,並描述在[這篇文章] (https://stackoverflow.com/a/45263176/1817569)。 – Hamid 2017-07-23 08:45:52