C++로 작성된 DLL을 사용하려고합니다. DLL 예제에서 다음 코드의 헤더 (.h)가 있습니다.C++ 클래스에서 DllImport를 사용하려면 어떻게해야합니까?
#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# 대신 C++/CLI를 사용해야합니다. –
가능한 [C#에서 비 관리 C++ 코드를 pinvoke를 사용하여 호출] (http://stackoverflow.com/questions/6332126/call-unmanaged-c-code-from-c-sharp-using-pinvoke), [DLLImport를 사용하여 가져 오기 개체] (http://stackoverflow.com/q/2071993), [C# 프로그램에서 Visual C++로 작성된 DLL을 사용하는 방법?] (http://stackoverflow.com/q/13222076) –