我只是关注msdn docs来理解C#项目的本机c ++动态库实现。所以我开始使用新的visual studio sln如下:
==>包含测试标头和定义的C ++ DLL控制台应用程序
Test.h
ffmpeg
Test.cpp的
#ifdef TESTFUNCDLL_EXPORT
#define TESTFUNCDLL_API __declspec(dllexport)
#else
#define TESTFUNCDLL_API __declspec(dllimport)
#endif // TESTFUNCDLL_EXPORT
#include <string>
extern "C" {
TESTFUNCDLL_API float TestMultiply(float a, float b);
TESTFUNCDLL_API std::string CPPOwnerName(int ind);
TESTFUNCDLL_API int GetIntCPP();
TESTFUNCDLL_API int DoubleIntCPP(int num);
}
==&GT; C#类库
TestClass.cs
#include "Test.h"
extern "C" {
float TestMultiply(float a, float b)
{
return a*b;
}
std::string CPPOwnerName(int ind)
{
return "Shubham Singh. CPP!";
}
int GetIntCPP()
{
return 3;
}
int DoubleIntCPP(int num)
{
return 2 * num;
}
}
现在在我当前的C#项目中导入两个库之后。我无法访问几个CPP库函数,如: CPPOwnerNAme(字符串)或GetIntCPP() 但相反,我能够访问其他两个函数:TestMultiply(float,float)和DoubleIntCPP(int)
之前我认为extern函数需要有参数才能访问它们,因为我在获取CPPOwnerName()的EntryPointNotFound Exception但是在包含参数&#34; ind&#34;之后该程序只是简单的崩溃!!!
感谢任何形式的帮助/指南。感谢。