문제

나는 그게 C ++에서 좋지 않다. 그러나,.. 예를 들어,이 기능이 있습니다

#define GETSomthing_API  __declspec(dllexport)
extern GETSomthing_API int nGetSomthing;
.

과 내가 가져 오려는 방법

GETSomthing_API  int GetSomthing(const char* szConfigPath, char *A, int B)
.

어떻게 c #?

에서 이것을 호출 할 수 있습니까?

옆에, C ++ 측면에서 매개 변수 유형 (const char *)과 함께 내 문제가있는 것 같아요, C #의 동등한 유형은 무엇입니까!Const char *

감사합니다

도움이 되었습니까?

해결책

C #에서 C ++ 코드를 호출하는 방법

또는

C #에서 C ++ 함수 호출

사용 : [dllimport ( "xxx.dll") xxx.dll은 C ++에서 컴파일됩니다

이 도움이되기를 바랍니다.

다른 팁

C #에서 기본 코드로 호출하는 데 몇 가지 방법이 있습니다.가장 쉬운 것은 아마도 P/Invoke를 사용할 것입니다. 귀하의 기능이 같아요 :

extern "C" int nGetSomeThing(void);
.

및 yourdllname.dll 파일로 컴파일되면 P / Invoke를 사용하여 C # 코드에서 다음과 같은 방법으로 관리되지 않는 코드로 직접 호출 할 수 있습니다.

public static class interop
{
    [DllImport("YourDllName.dll")]
    static extern public int nGetSomeThing(void);
}
...
interop.nGetSomething() // call to the native function
.

참조 : http://msdn.microsoft.COM / KO-US / Library / AA288468 % 28vs.71 % 29.aspx .

복잡한 서명이있는 많은 기능이있는 경우 C ++ / CLI에서 Interop 레이어에 대해 이동해야합니다. 참조 : http.: //www.codeproject.com/articles/19354/quick-in-cli-learn-c-cli-in-than-10-minutes

방금 __cplusplus 확인을 추가했고 작동했습니다!

#ifdef __cplusplus
.

extern "c"{

endif

GETSomthing_API char* GetAgentId(const char* szConfigPath, char *szA, int ASize);
.

ifdef __cplusplus

}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top