导入c ++ dll时C#程序崩溃

时间:2018-03-26 16:31:43

标签: c# c++ dll unmanaged managed

我只是关注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;之后该程序只是简单的崩溃!!!

感谢任何形式的帮助/指南。感谢。

0 个答案:

没有答案