Creative Commons License

Community

공지/뉴스
지식공유
질문/답변
자료실
자유로운 글
방명록

공유를 넘어 교류로... 제가 알리는 말씀 및 사이트 이용자들이 함게 참여하는 커뮤니케이션 공간입니다.

.

질문/답변

개발 중 막히셨나요?? 여기 먼저 경험한 개발자들의 답변을 부탁드려보세요~ 단, 질문의 내용은 되도록이면 아주(?) 상세히 해 주셔야 합니다

C#에서 String&을 변환하니 오류가 발생합니다.

작성자 공간
작성일 2010-10-25 오후 2:35:37,    조회수 : 5737

항상 답변 해주셔서 감사합니다. 형변환이 잘 안되어서 이렇게 질문을 합니다.


C++에서 sGet(int index, CString& value)
{
   std::string test;
   Get(index, test); 
   alue = test.cstr()나다
 
Get함 수의 원형은 Get(int index, std::string &) 입니다.
 
한번에 C#에서 못 받아서 test변구에 담아 value로 담아습니다.
 
C#에서는
        [DllImport("FDBControl.dll")]
        public static extern void sGet(int index, [MarshalAs(UnmanagedType.AnsiBStr)] ref string value);
 
이렇게 형변환하였습니다.
 
string data;
sGet( 1, ref data); 이렇게 실행시켜 값이 리턴 될 때도 있고
 
메모리 오류 날때도 있습니다. 제가 형 변환을 잘 못했나요? 답변 부탁드립니다.

 

∵Commented by 공간 at 2010-10-25 오후 4:22:19  
EXPORT void __stdcall sGet(int index, LPCTSTR& value)<br>{<br> std::string test;<br> try {<br> fdb->statement->Get(index, test);<br> value = test.c_str();<br>}<br> <br>C++ dll에서 value 메세지 박스를 표시하니 글자가 제대로 들어있었습니다.<br> <br>C#에서 밑에서 형변환을 했구요, <br> <br>public static extern void sGet(int index, [MarshalAs(UnmanagedType.LPTStr)] ref string value);<br> <br>value안에 글자가 다 깨져서 들어 있습니다. 제가 한게 AnsiBstr LPWstr, LPStr등 5가지 정도 했는데<br>다 깨져서 표시 되네요.<br> <br>어떻게 형 변환 하면 되나요? 꼭 답변 부탁드립니다.<br>
이름
비밀번호
홈페이지
XK <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요