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

C++빌더 Q&A
C++Builder Programming Q&A
[73882] Re:Re:Re: namespace를 없앴는데도, 생성자/소멸자를 사용할 수 없다고 하는데...
[] 3759 읽음    2016-10-05 12:29
제가 질문을 잘못이해했나봅니다. 죄송합니다.
님께서 고민하시는 문제는 BC++5가  특정구문을 컴파일할 수가 있는가? 없는가? 에 원인이 있는 것이 아니라.
VC로 컴파일해서 만들어진 DLL을  BC++에서 호출하여 사용할 수 있는가? 하는 것이라는 것을 지금에서야 알았네요.
특히 표준DLL이 아니고 C++로 만들어진 DLL이 문제가 있습니다.
<윈도우즈의 DLL은 C로 만들어진 것만이 표준입니다.>

이미 이문제에 대하여는 많은 글이 나와있지만 아래의 글을 참고해 보세요.
잠깐 스포일하자면 "가능하지만 무척 까다롭다" 입니다.

C++빌더강좌/문서
[143] C++빌더,델파이에서 작성된 클래스를 VC++에서 사용하기 또는 그 반대로 사용하기.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tutorial&no=143

Lee 님이 쓰신 글 :
: 안녕하세요.
:
: namespace를 없애고 아래와 같이 코드를 만들었는데도, Class의 생성자 소멸자가 인식이 안된다고 합니다.
:
: 뭔가 잘못된게 아닐까요?
: (상대편은 Class를 다 없애 달라고 하고 있습니다. 작업량이 어마어마할 것 같은데... 큰일입니다.)
:
: 제가 Borland C++ 5.0으로 작성된 코드를 찾아서 봤는데 생성자/소멸자 등을 사용하고 있었거든요.
: 혹시 dll이라서 뭔가 안되는건지, Borland C++ 5.0은 생성자/소멸자를 사용하는 방법이 다른건지 궁금합니다.
:
: @@@ 변경 코드 @@@
:
: #ifndef DLL_EXPORTS
: #define DLL_API __declspec(dllimport)
: #else
: #define DLL_API __declspec(dllexport)
: #endif
:
: class A
: {
:    public:
:          DLL_API A();
:          DLL_API virtual ~A();
:
:          DLL_API virtual int B();
:          DLL_API virtual int C();
:   private:
:          int D;
:         double E;
:         BYTE * F;
: }
:
: Lee 님이 쓰신 글 :
: : 아!! 참고로 제가 만든 dll은 VC++ 6.0에서 만든것인데, 제가 namespace만 지운다면
: : Bolrand C++ 5.0에서 사용하는데 무리가 없다고 보면 되겠네요?
: :
: : 정말 큰 도움 되었습니다. 감사합니다.
: :
: :  님이 쓰신 글 :
: : : Borland C++ 5.0은  1997에 출시된 제품입니다.
: : : 님께서 VC++를 사용하신다고 하셨는데 Visual C++ 5.0이  1997년이라서 
: : : Visual Studio 97이라고 불리웠었죠.. (아 그리워라 20세기...)
: : :
: : : 그 잘난 VC++도 VC++2003에서야  namespace를 사용할수 있게 되었습니다.
: : :
: : : 하지만 클래스, 생성자, 소멸자는 물론 옛날(1990년)부터 사용가능합니다. namespace때문에 못알아듣는 것이죠.
: : :
: : : 같은 이름의 클래스가 있어서 서로 충돌하는 상황이라서 불가피한 경우가 아니라면  nampespace 지우셔도 충분하다고 생각합니다.
: : : 어짜피 필수적인 요소라기 보다는 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 목적 뿐이니까요.
: : :
: : : 그럼...
: : :
: : : Lee 님이 쓰신 글 :
: : : : 안녕하세요.
: : : :
: : : : Borland C++ 5.0에서 아래 코드를 사용할 수 없는지 궁금합니다.
: : : :
: : : : 저는 현재 VC++을 사용하고 있는데, VC++을 이용하여 DLL을 만들어 Borland C++ 5.0 사용자에게 주었습니다.
: : : :
: : : : 근데 하기 코드 중에 namespace와 class, 생성자, 소멸자를 borland c++ 5.0에서는 사용할 수 없다고 하네요.
: : : :
: : : : 제가 볼랜드는 사용해 본 적이 없어서,
: : : : 그분이 사용방법을 몰라서 그러는건지 지원이 안되는건지 판단이 안됩니다.
: : : : (진짜로 볼랜드 C++ 5.0에서는 namespace와 class 등은 사용할 수 없나요?)
: : : :
: : : : 좀 도와주세요.
: : : :
: : : : 코드 구성은 하기와 같습니다.
: : : :
: : : : <코드구성>
: : : :
: : : : namespace ABC
: : : : {
: : : :    class A
: : : :    {
: : : :         A();
: : : :       ~A();
: : : :
: : : :        ....
: : : :    }
: : : : }
: : : :

+ -

관련 글 리스트
73858 Borland C++ 5.0에서는 namespace와 class를 사용할 수 없다는게 사실인가요? Lee 3844 2016/09/20
73859     사실입니다만... 3748 2016/09/21
73866         Re:사실입니다만... Lee 3849 2016/09/26
73881             Re:Re: namespace를 없앴는데도, 생성자/소멸자를 사용할 수 없다고 하는데... Lee 3840 2016/10/05
73882                 Re:Re:Re: namespace를 없앴는데도, 생성자/소멸자를 사용할 수 없다고 하는데... 3759 2016/10/05
73885                     Re:Re:Re:Re: 감사합니다. 쉬운 작업은 아닌가 보네요. ^^; Lee 3732 2016/10/05
74081                         Re:Re:Re:Re:Re: 해결했습니다~~~!!!! (감사합니다. ㅠㅠ) 3436 2017/01/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.