我在非托管c ++中有多个cpp文件,我想使用P \ Invoke从vb .net访问这些文件的类方法,为此我已经编写了C包装器来暴露类方法。可以有人帮助我,如何围绕C ++代码编写ac包装器。我正在复制我的文件的一些代码,请帮我写这些函数的包装器。
#include "StdAfx.h"
#include "Verify.h"
Verify::Verify(void)
:_verified(false)
{
}
Verify::~Verify(void)
{
}
void Verify::SetVerified(bool value)
{
_verified = value;
}
bool Verify::GetVerified(void) const
{
_verified;
}
void Verify::SetFailurePoint(std::basic_string<TCHAR> const & value)
{
_failurePoint = value;
}
std::basic_string<TCHAR> const & Verify::GetFailurePoint(void) const
{
return _failurePoint;
}
答案 0 :(得分:2)
在wrapper.h中:
typedef void * VERIFY_HANDLE;
extern VERIFY_HANDLE Verify_Create();
extern void VERIFY_SetVerified(VERIFY_HANDLE, bool);
extern bool VERIFY_GetVerified(VERIFY_HANDLE);
/* etc, etc */
在wrapper.c中:
#include "wrapper.h"
#include "Verify.h"
VERIFY_HANDLE Verify_Create() { return (VERIFY_HANDLE) new Verify(); }
void SetVerified(VERIFY_HANDLE h, bool b) { ((Verify *)h)->SetVerified(b); }
bool GetVerified(VERIFY_HANDLE h) { return ((Verify *)h)->GetVerified(); }
答案 1 :(得分:1)
就像:
extern "C" {
typedef void *VERIFY;
VERIFY create_verify() {
return (VERIFY)new Verify();
}
void verify_set(VERIFY verify, int value) {
((Verify*)verify)->SetVerified((bool)value);
}
int verify_get(VERIFY verify) {
return ((int)((Verify*)verify)->GetVerified());
}
}
的更多信息