C #에서 C ++ 원시 적성을 호출하는 방법
-
21-12-2019 - |
문제
나는 그게 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 *
감사합니다
해결책
또는
사용 : [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
}
제휴하지 않습니다 StackOverflow