我有一个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 方面没有任何经验。有什么办法可以解决此问题?
使用wchar_t*作为参数类型,然后使用gcnew 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);
}