Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15483] Re:Re:Delphi로 만든 DLL을 VB에서 사용할때 String문제 질문입니다.
첫눈 [hadugo] 2117 읽음    2015-04-15 15:14
UnmanagedType.BStr 라는 것이 생소해서 링크해 주신 자료와
구글을 뒤지고 있는데 제가 알아 볼만한 자료는 아직 찾지 못하겠습니다.

쉽게 찾지는 못할듯 하지만 일단 힌트라도 얻었으니 열심히 찾아 보겠습니다.
빠른 답변 감사합니다.^^

정영훈 님이 쓰신 글 :
: 델파이에서 작성한 dll을 닷넷에서 사용하시고자 하는데 발생한 문제군요.
:
: 델파이가 문제라거나 닷넷이 문제라거나 하는 경우가 아닙니다.
: 결론은 닷넷 CLR 과 델파이 데이터 타입을 맞춰주셔야 합니다.
:
: 간단하게 델파이의 WideString 은 COM 의 BSTR 타입과 호환이 됩니다.
: 즉 닷넷에서의 타입은 UnmanagedType.BStr 로 받으셔야 합니다.
:
: https://msdn.microsoft.com/ko-kr/library/s9ts558h(v=vs.110).aspx
:
: 위의 링크를 참조하세요.
: 첫눈 님이 쓰신 글 :
: : DelphiXE2 와 Visual Studio 2013을 사용합니다.
: :
: : 하다 하다 안되니 이젠 별 짓을 다 해봅니다.
: :
: : 델파이로 DLL을 만들어 VB에서 가져다 사용할까 하고 테스트삼아 하나 만들어 봤습니다.
: :
: :
: :
: : 
: : 
: : library MyDLL;
: : 
: :   uses
: :     VCL.Dialogs;
: : 
: : Function Test(A: WideString; B: WideString) : WideString; stdcall;
: : Var
: :       C : String;
: : begin
: :       Result := A + B;
: :       ShowMessage('A : "' + A + '"' + #10#13 + 'B : "' + B + '"' + #10#13 + 'Result : "' + Result + '"');
: : end;
: : 
: : exports
: : Test name 'Test';
: : 
: : begin
: : end.
: : 
: : 
: : 

: :
: :
: :
: : 위와 같이 DLL을 만들고 이것을 아래와 같이 VB에서 사용하는데요.
: :
: :
: :
: :
: : 
: : Public Class Form1
: : 
: :     Public Declare Function Test Lib "MyDLL.dll" (ByVal A As String, ByVal B As String) As WideString
: : 
: :     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
: :         Dim a As String = "글자가" & vbCrLf 
: :         Dim b As String = "잘보이나?" & vbCrLf
: :         Dim c As String = ""
: : 
: :         c = Test(a, b)
: : 
: :         TextBox1.Text = a
: :         TextBox2.Text = b
: :     End Sub
: : End Class
: : 
: : 

: :
: :
: :
: : VB쪽에서는 이상이 없는데 문제는 델파이쪽입니다.
: :
: :       ShowMessage('A : "' + A + '"' + #10#13 + 'B : "' + B + '"' + #10#13 + 'Result : "' + Result + '"');
: : 

: : 이부분에서 한글이건 영문이건 관계없이 글자가 모두 깨져서 보이거든요.
: :
: : 이건 어떻게 해결해야 하나요?

+ -

관련 글 리스트
15481 Delphi로 만든 DLL을 VB에서 사용할때 String문제 질문입니다. 첫눈 2095 2015/04/15
15487     Re:Delphi로 만든 DLL을 VB에서 사용할때 String문제 질문입니다. 2227 2015/04/16
15482     Re:Delphi로 만든 DLL을 VB에서 사용할때 String문제 질문입니다. 정영훈 2149 2015/04/15
15483         Re:Re:Delphi로 만든 DLL을 VB에서 사용할때 String문제 질문입니다. 첫눈 2117 2015/04/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.