aaaa 님이 쓰신 글 :
: 영악한녀석 님이 쓰신 글 :
: : 안녕하세요.
: :
: : 제가 C++ Builder 6.0에서 VCL을 사용한 DLL을 만들었습니다.
: : TClientSocket, TTimer 등등.. 사용했습니다.
: :
: : 그리고 그렇게 만들어진 DLL에서 클래스를 뱉어내는 함수를 만들어서 사용하고 있습니다.
: :
: : 참조 :
http://edn.embarcadero.com/article/20165
: :
: : 이 DLL이 C++ Builder에서는 문제 없이 작동 됩니다.
: : 하지만 Visual Studio 2103에서는 클래스는 잘 불러와지는데, 동작을 제대로 안하는게 문제입니다.
: : TClientSocket의 Open 메소드가 호출해도 아무런 반응이 없습니다.
: : Open 메소드 호출 후 Lookup 이벤트까지는 발생하였습니다만,
: : 그 이후의 이벤트들은 발생하지 않습니다.
: : 또 재밌는 부분은 TClientSocket의 Host, Port 같은 프로퍼티의 Get, Set은 아무런 문제가 없습니다.
: : 왜 이런걸까요?
: :
: : 혹, VCL을 사용한 DLL 라이브러리를 VC++에서 사용하는데 있어서
: : 유의해야 될 만한 것들이 있는지 선배님들께 조언좀 얻고자 합니다.
: :
: : 참고로 현재 호출 규약은 이벤트 메소드를 정의하는 영역을 제외하고 모두 __stdcall로 통일했습니다.
: :
: :
:
: 비주얼이랑 빌더랑 방식이 엄연히 다르고 함수조차 약간다르고
: 지원하는 함수들이 다른뎅 비주얼에서 사용지 제대로될리가
: 만무하고요 dll도 빌더랑 비주얼이랑 파일형식이달라서
: 보통 비주얼에서만든 dll 파일을 빌더에쓰려면 컨버터로 변환해주어야
: 빌더에서 사용가능한 경우도 있기 때문이죠 아마도 폼을 dll에 넣으셧나요
: 폼을넣지말고 클래스로 작성해보세요 폼이 비주얼이랑 안맞는거같아보여요
답변 주신 글 잘 보았습니다. 감사합니다.
VC++ 과 BC++의 파일 포맷 차이는 정적라이브러리인 lib파일의 서식이 COFF와 OMF로 서로 다른걸로는 알고 있습니다.
근데 저는 lib파일을 사용하는 것이 아니라 dll파일을 명시적으로 로딩 후 사용하기 때문에 그 부분은 문제가 안됩니다.
감사합니다.
먼저 간단하게 서버와 TClientSokcet을 사용한 클라이언트 라이브러리를 만들어서 테스트를 해봐야 겠네요.