2

C ++で記述されたWindowsアプリケーションがあり、その一部をMac OS Xに移植しようとしています。目標は、ビジネスロジックをいくつかのライブラリにラップし、コントローラーとGUI用にCocoaレイヤーを上に構築することです。同じライブラリを使用する小さなアプリがいくつかある可能性があるため、最初に考えたのは、C ++コードにダイナミックライブラリを使用することでした(より良い方法がない限り)。ただし、これを達成するにはいくつかの問題があります。ダイナミックライブラリは正常に準拠しており(少なくともそのように見えます)、アプリでリンクする.dylibファイルを取得します。問題は、私たちのアプリが、含めようとしている.hファイルをまったく見つけられないことです。.hファイルがエクスポートされていることと、インストール名を確認し、ライブラリが正しいディレクトリにあることを確認しました。また、私たちはアップルをフォローしています」

ここでの私の質問は2つの部分に分かれています。

  1. 何よりも先に試す必要のあるインターフェイス(つまり、.hファイル)を公開するのに役立つ、欠落している可能性のある明らかなステップはありますか?
  2. このプロジェクトで継承したくだらないC++コードに問題があるのではないかと思われます。たとえば、.hファイルに直接書き込まれるロジック(メソッドの実装)がたくさんあり、場合によっては、対応する.cppファイルさえまったくありません。したがって、.hファイルは単なるインターフェイスの説明ではありません。私たちのアプリはライブラリから.hファイルを見つけることさえできず、少なくとも存在しているはずなので、これは(厳粛な)問題ではないかもしれません。移植する必要のあるコードベースが非常に大きく、(いつものように)締め切りが近いので、多くのコードを書き直さないようにできることを本当に望んでいます。

PS:これまでのところXcode 4.2でのみ作業しており、コマンドラインツールはまだ試していません。

4

1 に答える 1

1

オプション1

この場合、ヘッダーを含むディレクトリをXcodeのヘッダーまたはライブラリの検出パスに追加するだけです。レイアウトによっては、いくつかのアプローチが他のアプローチよりも優れています。

通常、次の組み合わせを使用します。

  • HEADER_SEARCH_PATHS
  • LIBRARY_SEARCH_PATHS
  • USER_HEADER_SEARCH_PATHS
  • またFRAMEWORK_SEARCH_PATHS

どちらが正しいかは、使用しているライブラリによって異なります(たとえば、これらのオプションはリンカーにも影響を与える可能性があります)。検出パスを定義するときに**、再帰検索を示すために接尾辞を追加できます。

xcプロジェクトをvsソリューションと同期させる際の問題が少なくなるため、これは理想的です。

オプション2

インクルードのドラッグアンドドロップのサポートが本当に好きな人もいます...私は好きではありませんが、検索パスを追加するだけの簡単なことを行うことができないほど混乱している場合は、これがアプローチです。

  • 必要なヘッダーをプロジェクトに追加します
  • これらのヘッダーをターゲットのコピーヘッダービルドフェーズに追加します
  • ビルドするまで繰り返し、更新をマージ/プルするときに破損の準備をします。

これはすぐに面倒になり、ヘッダー名に衝突がある場合にライブラリを再利用する場合は、再構築に数時間かかります。

于 2011-10-26T07:55:33.393 に答える