2011-10-28 2 views
0

관리되지 않는 C++에서 cpp 파일의 수가 많습니다.이 파일의 클래스 메서드에 v .net에서 P \ Invoke를 사용하여 액세스하려고합니다. C 래퍼를 작성합니다. 아무도 나를 도울 수있는 C 코드 주위에 AC 래퍼를 작성하는 방법을 classes.Can 노출. 내 파일의 일부 코드를 복사 오전,이 함수에 대한 C 래퍼를 writting 도와주세요. wrapper.h에서C 래퍼를 C++ 코드 주위에 작성하여 클래스 메서드를 표시하는 방법

#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; 
} 

답변

2

:

wrapper.c에서
typedef void * VERIFY_HANDLE; 
    extern VERIFY_HANDLE Verify_Create(); 
    extern void VERIFY_SetVerified(VERIFY_HANDLE, bool); 
    extern bool VERIFY_GetVerified(VERIFY_HANDLE); 
    /* etc, etc */ 

:

#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

그것은있을 것 같은 :

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()); 
    } 
} 

더 많은 정보 Oracle pages

에서
관련 문제