c++ -> c# dllimport 질문이요~!!
안녕하세요 ㅎㅎ C/C++ 기반의 구문분석기를 C#에서 사용하려고 dllimport 시도중인데요, 잘안되네요 =_=;;
[C/C++ 코드]
extern "C" __declspec(dllexport) int Analyze_input_text(char* input_text, char *ppArray){ //입력 구조체(포인터 출력가능)
int size;
//...내부코드
return size;
}
//메인함수에서 이렇게 돌려보면 잘 들어가있습니다.
int main(){
char *ppArray[100];
int size = Analyze_input_text("나는 지금 몇주째 삽질중인가",ppArray);
for(int i=0;i
printf("%s\n",*(ppArray+i));
}
}
[C# 코드]
[DllImport("PP_TextAnalyzer.dll",CallingConvention = CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
extern public static int Analyze_input_text(IntPtr data, [MarshalAs(UnmanagedType.LPArray, SizeConst = 100)] string[] ppArray);
public int GetDataFromUtagger(string input_text)
{
IntPtr pStr = Marshal.StringToCoTaskMemUni(input_text);
List ppArray = new List();
int size = Analyze_input_text(pStr,ppArray.ToArray());
return size;
}
=> 이런식으로 마샬링했는데, 뭐가 잘못된건지..값들이 안들어가더라구요 ㅠ.ㅠ 불쌍한 개발자 한번만 도와주십숑 굽신굽신
으아
으아
ㅠㅠ 글이 왜 짤라져서 보이나요..흐아
ㅠㅠ 글이 왜 짤라져서 보이나요..흐아
[C# 코드]
[DllImport("PP_TextAnalyzer.dll",CallingConvention = CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
extern public static int Analyze_input_text(IntPtr data, [MarshalAs(UnmanagedType.LPArray, SizeConst = 100)] string[] ppArray);
public int GetDataFromUtagger(string input_text)
{
IntPtr pStr = Marshal.StringToCoTaskMemUni(input_text);
List ppArray = new List();
int size = Analyze_input_text(pStr,ppArray.ToArray());
return size;
}
[C/C++ 코드]
[C/C++ 코드]
extern "C" __declspec(dllexport) int Analyze_input_text(char* input_text, char *ppArray){ //입력 구조체(포인터 출력가능)
int size;
//...내부코드
return size;
}
댓글 달기