0

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")]、例と同じ形式のコンストラクターを使用しているのでしょうか?

4

1 に答える 1

2

P/Invoke は、C++ クラスではなく、C API で動作することを意図しています。

C API で C++ クラスをラップし、それをエクスポートする必要があります。[DllImport(...)]次に、C API の個々のメソッドを( を使用して) P/Invoke することができます。

于 2013-06-11T19:18:26.557 に答える