나는 약간 의 char * Bar[]
을 얻는 것을 혼동했다.관리되는 배열에서 char * arr []을 얻는 방법 <String^> ^?
내 관리되지 않는 함수 모양이 좀있다 : 부 관리
void NativeClass::Foo(char * Bar[])
{
SomeAPIFunction(Bar);
}
은 (단지 내가 달성하기 위해 노력하고있는 무슨의 아이디어를 줄 것이다) :
void ManagedClass::Foo(array<String^>^ Bar)
{
NativeClass * MyNativeClass = new NativeClass();
MyNativeClass->Foo(Bar);
}
- 는
pin_ptr
발견. 그것을 작동시킬 수 없습니다. String^
~char *
의 경우 :char * NewFoo = (char*)(void*)Marshal::StringToHGlobalAnsi(Foo);
을 사용하십시오. 그런 식으로 갈 수있는 기회가 있을지 모릅니다.SomeAPIFunction(Bar)
을 변경할 수 없습니다.- 내 관리
Bar
의 크기가 고정되어 있지 않습니다.
'String :: c_str()'을 사용하지 않는 이유는 무엇입니까? – Stargateur
'String ^'에서'char * '를 얻는 법을 알았습니다. 좋은 시작입니다. 예를 들어 'std :: vector ''배열 ^'에서? 당신이 그것을 할 수 있다면 당신은 실질적으로 당신이 필요로하는 것을 가지고 있습니다. 오, 그런데, 왜 당신은 동적으로'MyNativeClass'를 할당하고 있습니까? 마지막으로, 생성하는 문자열을 해제하는 것을 잊지 마십시오! –
나는 여전히 그것에 대해,하지만 명확히하기 위해, "관리되는 부분"예제는 단지 참조 용이며, 나는'MyNativeClass'를 초기화해야합니다. 그리고 저는 "수동 GC"도하고 있습니다. 하지만 내 문제는이게 관련이 없다고 생각해. 그래서, 갈 가장 좋은 방법은 뭔가? 'array ^'을'char * Bar []'의'벡터 '에 연결 하시겠습니까? –
Essigwurst