2011-10-26 2 views
2

우리는 C++로 작성된 Windows 애플리케이션을 가지고 있습니다.이 애플리케이션의 일부는 Mac OS X로 포팅하려고합니다. 우리의 목표는 비즈니스 로직을 일부 라이브러리로 랩핑하고 Cocoa 레이어를 빌드하는 것입니다 컨트롤러 및 GUI 상단. 우리는 아마도 동일한 라이브러리를 사용하는 몇 개의 작은 응용 프로그램을 가지고있을 것이고 그래서 우리의 첫 번째 생각은 더 좋은 방법이없는 한 C++ 코드 용 동적 라이브러리를 사용하는 것이라고 생각할 것입니다. 그러나이를 달성하는 데 몇 가지 문제가 있습니다. 우리의 동적 라이브러리는 괜찮습니다 (적어도 그렇게 보입니다). 우리는 우리의 앱에서 링크하는 .dylib 파일을 얻습니다. 문제는 우리 앱이 단순히 우리가 포함하려고하는 .h 파일을 찾을 수 없다는 것입니다. .h 파일을 내보내고 설치 이름을 확인하고 라이브러리가 올바른 디렉토리에 있는지 확인했습니다. 또한 동적 라이브러리를 만들고 사용하기위한 Apple의 가이드를 따라 갔으며 우리가 놓친 특별한 단계도 발견하지 못했습니다. 여기OS X에서 동적 라이브러리 생성 및 사용하기

내 질문은 두 부분입니다 :

  1. 우리는 우리가 다른 어떤 전에 시도해야 인터페이스 (즉 .H 파일)을 노출하는 수단이되는 누락 될 수있는 몇 가지 명백한 단계가 있습니까?
  2. 우리는이 프로젝트에서 계승 한 엉터리 C++ 코드에 오류가있을 것이라고 생각합니다. 예를 들어, .h 파일에 직접 작성된 많은 논리 (메서드 구현)가 있고 경우에 따라서는 .cpp 파일도 전혀 없습니다. 따라서 .h 파일은 단지 인터페이스의 설명이 아닙니다. 우리 앱이 라이브러리에서 .h 파일을 찾을 수 없기 때문에 이것은 (엄숙한) 문제가 아닐 수 있습니다. 포팅해야하는 코드 기반이 실제로 크고 (평소와 같이) 마감일이 가까워지기 때문에 많은 코드를 다시 작성할 필요가 없기를 바랍니다.

추 신 : 우리는 지금까지 Xcode 4.2에서만 작업 해 왔으며 아직 명령 행 도구로 시도하지 않았습니다.

+1

프로젝트/대상의 빌드 설정에서 라이브러리 포함 파일의 경로 (헤더 검색 경로 또는 사용자 헤더 검색 경로)를 지정했는지 확인하십시오. –

+0

헤더 파일이 (파일 시스템에서) 예상되는 위치에 있는지 확인하십시오. – arne

+0

실제로이 작업은 순수한 절망에서 끝났습니다. 그러나 이것이 정말로 필요한가? 즉, 라이브러리를 배포 할 때 헤더 파일도 배포해야한다는 의미입니다. 따라서 .dylib는 완전히 자체 포함 된 Windows의 .dll 파일과 비슷한 방식으로 작동하지 않습니다. – pajevic

답변

1

이 경우 옵션 1

, 난 그냥 엑스 코드에서 헤더 나 라이브러리에 대한 검색 경로에 헤더를 포함하는 디렉토리를 추가합니다. 레이아웃에 따라 일부 방법이 다른 방법보다 낫습니다.

일반적으로, 당신은 어떤 조합을 사용합니다 : 하나가 올바른지

  • HEADER_SEARCH_PATHS
  • LIBRARY_SEARCH_PATHS
  • USER_HEADER_SEARCH_PATHS
  • 또는 FRAMEWORK_SEARCH_PATHS

것은 당신이 라이브러리에 따라 달라집니다 사용 (예 :이 옵션은 링커). 검색 경로를 정의 할 때 접미사 **을 추가하여 재귀 적 검색을 나타낼 수 있습니다.

xc 프로젝트를 vs 솔루션과 동기화 할 때 문제가 줄어들 기 때문에 이상적입니다. 그들의 포함에 대한

옵션 2

어떤 사람들은 정말 일부 드래그 등의 지원을 드롭 ...난 몰라,하지만 검색 경로 추가로 당신은 그냥 간단하게 뭔가를 할 수 없어 너무 많이 해체가있는 경우이 접근 방식입니다 :

  • 프로젝트
  • 추가로 필요로하는 헤더를 추가는 복사 헤더에 대한 헤더는 대상을 업데이트하고 병합/풀을 수행 할 때까지 빌드가 완료 될 때까지 반복적으로 대상의 단계를 만듭니다.

빨리 지저분 해지고 헤더 이름에 충돌이있는 경우 라이브러리를 다시 사용할 때 재구성하는 데 몇 시간이 걸립니다.

+0

답장을 보내 주셔서 감사합니다. 위와 같은 의견을 보내 주셔서 감사합니다. – pajevic

+0

@NobleK 당신은 환영합니다. 그리고 마감일에 행운을 빕니다. – justin