如何在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")]
,但当我使用相同形式的构造函数时?
p/Invoke旨在使用C API,而不是c++类。
你需要将c++类封装在一个C API中,并导出它。然后,您可以P/Invoke(使用[DllImport(...)]
)在您的C API中的单个方法。