目前,我正在使用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++对象。尝试在返回值和参数中使用更多原始类型,例如int
,float
,char
和指针(例如char *
)。
C#部分:您可以检查MSDN Platform Invoke Data Types进行转换。
关于c++ - 警告C4190 C链接指定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20798110/