|
현재 엠바카데로에서 사용하고 있는 OBJ 포맷은 OMF 형식 인데...
지금은 박물관에서도 찾아보기 힘든... 도스 시절에나 사용됐던 OMF 포맷을 엠바카데로에서 아직 까지 사용하고 있죠...
리얼모드로 동작하는 도스 환경에서 16비트 또는 32비트 보호모드로 돌아가는 '도스 익스텐더'들도 자신들만의 확장된...
OBJ 파일을 사용하기 위해서 임의대로 OMF포맷을 변경해서 많이 사용했었죠...
엠바카데로가 사용하고 있는 OBJ 파일 역시 마찬가지로... OMF 포맷을 임의대로 자사의 입맞에 맞게 변형해서 사용하고 있기 때문에...
COFF 형식의 바이너리를 C++ 빌더에서 사용할 수 없는데요...
사용 가능하게 하기 위해선 COFF 포맷을 OMF 포맷으로 변환해야 하는데...
엠바카데로에서 자사 임의대로 변형해서 사용하고 있는 OMF 포맷에 대한 문서를 제공하고 있지 않기 때문 입니다...
그러나... 64비트에선 가능 한데요...
향후 나오게 될... 64비트 C++ 컴파일러가 OBJ 파일 포맷으로 유닉스 플렛폼에서 표준으로 사용되는 ELF 포맷을 사용하기 때문입니다...
윈도우즈 플렛폼에서 표준으로 사용되는 COFF 포맷을 사용하기로 했다면 바이너리 간에 유연한 호환성을 얻게될 텐데...
아쉬운 부분이라고나 할까요...
엠바카데로가 ELF 포맷을 사용하기로 한 이유는...
원천기술로 컴파일러를 직접 구현하기 보다는...오픈소스인 CLANG 컴파일러 툴 체인을 이용해서 제품을 상용화 하듯...
64비트 디버거 역시... 자체 원천기술로 개발하는 게 아닌... 오픈소스인 GNU Debugger 소스를 이용하고 있기 때문 입니다...
컴파일러 원천기술 R&D 기술 개발 보다는... 플렛폼 간의 프레임웍 라이브러리 구현에 집중해서.. 당장 돈 되는 쪽으로 가자는 게...
현재 엠바카데로가 추구하는 방향인 것 같습니다...
ELF, COFF 포맷 모두 도큐먼트가 아주 상세하게 잘 되어 있어서... COFF 포맷의 OBJ 파일을(라이브러리 파일도 OBJ 파일의 아키브
형태에 불과하기 때문에 마찬가지 임) ELF 포맷으로 변환하는 것은 어려운 일이 아닙니다. 저 같은 경우도 포맷을 변환하는 코드를
구현해서 사용하고 있으니까요....
특히 64비트에선... 사용 가능한 CPU 레지스터가 크게 확장되었기 때문에... Calling Convention을 레지스터를 통한 방식 하나로...
통일해서 사용하고 있고... 엠바카데로 역시 MS사의 64비트 ABI (Application Binary Interface)를 따르고 있습니다...
...
윈텍 님이 쓰신 글 :
: 네 OBJ 포맷이 달라서 링크 안되는건 저도 알고있고 혹시 방법이 없을까해서 알아보는 중입니다
:
:
: 김태선 님이 쓰신 글 :
: : OBJ 포멧이 틀려 바로 링크할 수 있는 방법은 없습니다.
: : 또한 VC로 만든 라이브러리 내에서 쓰는 RunTime Library가 VC용이기 때문에
: : 가능한 방법은 없습니다.
: :
: : VC로 래핑 DLL을 만들어 쓰는게 최선입니다.
: :
: :
: : 윈텍 님이 쓰신 글 :
: : : 안녕하세요
: : : C++ 빌더에서 VC static Library 사용할 수 있는 방법이 없을까요?
: : : 소스 없이 VC 로 만들어진 static library 파일만 있고, 장비 업체에서 C++ 빌더는 지원하지 않는다고해서 방법을 찾고있는데요
: : : static library는 C++이 아니고 exetern "C" 로 정의되어있는 평범한 C 코드라서 네임맹글링 제한도 없어서 가능할듯 한데
: : : 방법이 없을까요? MFC는 전혀 사용되지 않았고 순수하게 C로 만들어진 static library 입니다. DLL 아님
|