답변 감사 드립니다. 많은 도움이 되었습니다.
아래 자료 참고해서 작업 해보도록 하겠습니다. ^^
님이 쓰신 글 :
: 제가 질문을 잘못이해했나봅니다. 죄송합니다.
: 님께서 고민하시는 문제는 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();
: : : : :
: : : : : ....
: : : : : }
: : : : : }
: : : : :