Tôi đang cố gắng tìm hiểu P/Invoke, vì vậy tôi đã tạo ra một dll đơn giản trong C++Không thể tìm thấy một điểm vào khi gọi C++ dll trong C#
KingFucs.h:
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;
}
}
Vì vậy, nó không biên dịch, sau đó chúng tôi đã copy dll này vào thư mục debug WPF của tôi, với mã:
[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int GiveMeNumber(
int i
);
Và gọi đó là nút bấm:
private void Button_Click(object sender, RoutedEventArgs e)
{
int num = GiveMeNumber(123);
}
Nhưng nó mang lại cho tôi ngoại lệ:
Không thể tìm thấy một điểm vào tên 'GiveMeNumber' trong DLL 'KingFuncDll.dll'.
Thực sự .... tôi đã làm gì sai ... Rõ ràng là có thể tìm thấy tệp DLL, nếu không sẽ là một ngoại lệ khác. Nhưng tên phương pháp của tôi là chính xác như nhau .... Tôi không thể nghĩ ra lý do khác.
Vui lòng xem câu hỏi của tôi tại đây: http://stackoverflow.com/questions/9849541/writing-c-intended-to-be-called-from-c –
Tôi đã giải quyết cùng một câu hỏi và mô tả nó tại [bài đăng này] (https://stackoverflow.com/a/45263176/1817569). – Hamid