gpt4 book ai didi

c# - 从 C++/CLI 调用 C# dll 函数

转载 作者:可可西里 更新时间:2023-11-01 08:19:25 27 4
gpt4 key购买 nike

我有一个 C# dll。代码如下:

public class Calculate
{
public static int GetResult(int arg1, int arg2)
{
return arg1 + arg2;
}

public static string GetResult(string arg1, string arg2)
{
return arg1 + " " + arg2;
}

public static float GetResult(float arg1, float arg2)
{
return arg1 + arg2;
}

public Calculate()
{
}
}

现在,我打算用这种方式从C++调用这个dll。

[DllImport("CalculationC.dll",EntryPoint="Calculate", CallingConvention=CallingConvention::ThisCall)]
extern void Calculate();

[DllImport("CalculationC.dll",EntryPoint="GetResult", CallingConvention=CallingConvention::ThisCall)]
extern int GetResult(int arg1, int arg2);

这里是调用 GetResult 的函数

private: System::Void CalculateResult(int arg1, int arg2)
{
int rez=0;

//Call C++ function from dll
Calculate calculate=new Calculate();
rez=GetResult(arg1,arg2);
}

我收到错误:“语法错误:标识符‘计算’”。有人可以帮我解决这个可怕的错误吗?

最佳答案

您必须使用 C++ CLI,否则您无法调用 DllImport。如果是这种情况,您可以只引用 c# dll。

在 C++ CLI 中,您可以执行以下操作:

using namespace Your::Namespace::Here;

#using <YourDll.dll>

YourManagedClass^ pInstance = gcnew YourManagedClass();

其中“YourManagedClass”在输出程序集“YourDll.dll”的 c# 项目中定义。

** 编辑 **添加了您的示例。

这就是您的示例在 CLI 中需要的样子(为清楚起见,我假设 GetResult 不是静态函数,否则您只需调用 Calculate::GetResult(...)

private: System::Void CalculateResult(int arg1, int arg2)
{
int rez=0;
//Call C++ function from dll
Calculate^ calculate= gcnew Calculate();
rez=calculate->GetResult(arg1,arg2);
}

关于c# - 从 C++/CLI 调用 C# dll 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com