如何在c++类中使用DllImport

本文关键字:DllImport c++ | 更新日期: 2023-09-27 18:17:51

我正在尝试使用c++编写的DLL。在DLL示例中,有一个头文件(.h),其代码如下:

#ifndef CODEGEN_H
#define CODEGEN_H
// Entry point for generating codes from PCM data.
#define VERSION 3.15
#include <memory>
#include <string>
#ifdef _MSC_VER
    #ifdef CODEGEN_EXPORTS
        #define CODEGEN_API __declspec(dllexport)
        #pragma message("Exporting codegen.dll")
    #else
        #define CODEGEN_API __declspec(dllimport)
        #pragma message("Importing codegen.dll")
    #endif
#else
    #define CODEGEN_API
#endif
class Fingerprint;
class CODEGEN_API Codegen
{
public:
    Codegen(const float* pcm, uint numSamples, int start_offset);
    string getCodeString(){return _CodeString;}
    int getNumCodes(){return _NumCodes;}
    float getVersion() { return VERSION; }
private:
    string _CodeString;
    int _NumCodes;
};
#endif

如何访问dll并使用它们的方法?我知道我必须使用[DllImports("codegen.dll")],但当我使用相同形式的构造函数时?

如何在c++类中使用DllImport

p/Invoke旨在使用C API,而不是c++类。

你需要将c++类封装在一个C API中,并导出它。然后,您可以P/Invoke(使用[DllImport(...)])在您的C API中的单个方法。