我有一个带有以下代码的C#DLL:
namespace Csharplib`{
public class Calculate
{
public static int Sum(String value1, String value2)
{
int res = int.Parse(value1) + int.Parse(value2);
return res;
}
}
}`
我有一个CLI / CLR C ++应用程序,其中添加了我的C#DLL的引用。以下是我的CLI / CLR C ++应用程序的代码:
using namespace System;
using namespace System::Reflection;
namespace CplusManaged {
public ref class DoWork
{
public:int DoSum(System::String ^value1, System::String ^value2)
{
return Csharplib::Calculate::Sum(value1, value2);
}
};
}
__declspec(dllexport) int ShowSUM(System::String ^value1, System::String ^value2)`{
CplusManaged::DoWork work;
return work.DoSum(value1,value2);
}`
当我构建应用程序时,出现以下错误:
'ShowSUM': __declspec(dllexport) cannot be applied to a function with the __clrcall calling convention
我是C#开发人员,我没有任何C ++经验。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
使用wchar_t *作为参数类型,并使用gcnew String()转换为String ^,如下所示:
__declspec(dllexport) int ShowSUM(wchar_t * inValue1, wchar_t * inValue2)
{
String ^ value1 = gcnew String(inValue1);
String ^ value2 = gcnew String(inValue2);
CplusManaged::DoWork work;
return work.DoSum(value1, value2);
}