'ShowSUM':__declspec(dllexport)不能应用于具有__clrcall调用约定的函数



我有一个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);
    }

相关内容

  • 没有找到相关文章

最新更新