使用 Microsoft Visual Studio Professional 2019:
用C++创建了一个简单的加法函数来生成DLL文件。 在一个新的C#项目中,引用上面的DLL文件。
Win32:对于 C++ DLL 和 C# 程序,当活动平台设置为 Win32 时,可以使用引用管理器中的“添加引用”。该项目构建并运行没有任何问题。
x64:对于 C++ DLL 和 C# 程序,当活动平台设置为 x64 时,尝试在引用管理器中使用“添加引用”会导致弹出错误
并且引用未添加到项目中。
对于我的工作,我需要使用 x64。我应该调整哪些设置才能实现这一点?
CPP文件:
#include "pch.h"
#include "Divide.h"
Divide::Divide(int x) {
this->x = x;
}
int Divide::adding(int y) {
return this->x + y;
}
int Divide::get() {
return this->x;
}
extern "C" __declspec(dllexport) void* Create(int x) {
return (void*) new Divide(x);
}
extern "C" __declspec(dllexport) int DivideAdding(Divide * a, int y) {
return a->adding(y);
}
extern "C" __declspec(dllexport) int DivideGet(Divide * a) {
return a->get();
}
头文件:
class Divide {
int x;
public:
Divide(int x);
int adding(int y);
int get();
};
在 C# 中:
[DllImport("DivideDLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr Create(int x);
[DllImport("DivideDLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int DivideAdding(IntPtr a, int y);
[DllImport("DivideDLL.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int DivideGet(IntPtr a);
static void Main(string[] args)
{
try
{
IntPtr a = Create(5);
int temp = DivideGet(a);
Console.WriteLine("Initial:" + temp);
DivideAdding(a, 10);
对于我的工作,我需要使用 x64。我应该调整哪些设置才能实现这一点? 如果您需要更多信息,请告诉我。