|
혹시나 해서 드리는 말씀입니다.
Dll의 인스턴스를 하나로 같이 사용하시는게 아닐까 해서.. 한번 확인해보시길 권해드립니다.
어차피 호환이 되는 형태의 Dll로 만들게 되면 c의 기본 호출 형태로 만들어지는데, 이는 윈도우즈에서 동작하는 것을 다 만들수 있다고 봐도 되겠지요..
다만 정적으로 컴파일 하셨어도 사용할 때는 메모리를 동적으로 할당해서 써야 하는 경우가 있다는 것을...
시몬 님이 쓰신 글 :
: 안녕하세요 항상 도움을 받고있는 초짜입니다.
:
: 이곳에서 알려주신대로 볼랜드 C++로 ClientSocket을 포함하는 DLL을 만들어 VC++에서 정적으로
:
: 로드하여 사용하는데 까지 성공하였습니다. 감동감동~~ ^^
:
: 그런데 문제는 ClientSocket을 가지는 DLL (DLL이름, 포트넘버 등등 모두 틀립니다)을 만들어서 같은 방법으로
:
: VC++ 프로젝트에 추가하여 띄웠더니 마지막에 오픈한 Socket만 열리네요 ㅠㅠ
:
: 그니깐 예를들어 DLL 1 번의 소켓을 여는것이 Open1() 이고 DLL 2번 소켓을 여는것이 Open2()일때
:
: Open1();
: Open2();
: 이렇게 하면 Open2()에 있는 소켓만 열리고
:
: Open2();
: Open1();
: 이렇게 하면 Open1()에 있는 소켓만 열립니다.
:
: 나름대로 원인을 찾다 보니까 Thread인 경우도 같은 증상이 일어납니다.
:
: 예를들어
:
: DLLThreadRun_1();
: DLLThreadRun_2();
: 이렇게 하면 Thread가 2만 돌고
:
: DLLThreadRun_2();
: DLLThreadRun_1();
: 이렇게 하면 Thread가 1만 도네요 ㅠㅠ
:
: 여러개의 DLL을 써도 Thread는 1개 밖에 사용할 수 없는건가요?
: 혹시 볼랜드 C++로 만든 DLL을 VC++에서 사용할때 VC++에서 볼랜드용 DLL은 전부 Thread를 같다고 인식
: 하는건가요?
:
: 이게 어찌된 현상인지 아시는 고수님들의 답변을 기다리고 있습니다.
:
: 도와주세요~~
|