【发布时间】:2013-06-11 19:13:01
【问题描述】:
我正在尝试使用用 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++ 类,它仅适用于 C API。您需要编写包装函数,或者使用 C++/CLI 而不是 C#。