目前,我正在使用C++编写dll函数。之后,我使用DllImport将此dll导入我的C#项目。在我的C++项目中,我的第一个构建过程得到一个警告C4190。

Warning C4190: 'abc' has C-linkage specified, but returns
UDT'std::basic_string' which is incompatible with C

My current code is as follows:

extern "C"
{
  __declspec(dllexport) std::string abc(std::string targetFile)
  {
    return somestring;
  }
}

最佳答案

C++部分:不能在extern “C"接口(interface)中使用 namespace 和C++对象。尝试在返回值和参数中使用更多原始类型,例如intfloatchar和指针(例如char *)。

C#部分:您可以检查MSDN Platform Invoke Data Types进行转换。

关于c++ - 警告C4190 C链接指定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20798110/

10-12 20:44