2

に Cg をインストールしました/Library/Frameworks/Cg.framework。ディスク上では次のようになります。

ここに画像の説明を入力

私のXCode 3.2.6プロジェクトにはLibrary/Frameworks、フレームワーク検索パスとして-Framework Cg「その他のリンカー設定」がありますが、試してみると#include <Cg/cg.h>ファイルが見つかりません。「ヘッダー検索パス」に直接追加/Library/Frameworks/Cg.framework/Headersすると、「#include」できますが、「Framework not found Cg」というエラーでリンクに失敗します。

Mac フレームワークとは何かよくわかりません。それは特別なものですか、それとも単なる通常のディレクトリですか? 何らかの理由で Xcode が単にフレームワークであることを/Library/Frameworks/Cg.framework 理解していないようです。

これが関連しているかどうかはわかりません: https://stackoverflow.com/questions/5293940/xcode-3-2-6-stops- looking-in-library-frameworks

何が間違っているのかを理解する助けがあれば幸いです。

コマンドラインから簡単なテストをテストしました:

test.cpp

#include <Cg/cg.h>

void f()
{
  CGcontext context = cgCreateContext();
}

「gcc -c test.cpp」を実行するだけで成功します (-c はリンクしないと言います)。私も「gcc -M test.cpp」を実行しました(依存関係のリスト):/Library/Frameworks/Cg.framework/Headers/cg.hフレームワークは問題ないようです...検索パスを渡さずにgccを実行するにはどうすればよいですか?

4

3 に答える 3

2

プロジェクトにCgフレームワークを適切に追加しなかったと思います。ターゲットをクリック->[ビルドフェーズ](タブ)をクリック->[バイナリとライブラリのリンク]で[+記号]->[finCgフレームワーク]をクリックして追加します。これで、以下は問題なくコンパイルされるはずです。

 #include <Cg/cg.h>
 void a() {

    CGcontext context = cgCreateContext();
 }

また、提供されたイメージ(Cg-something.dmg)を使用してフレームワークをインストールしたと思います。

検索パスを手動で変更する必要はありません。上記のようにフレームワークが追加されると、コンパイラはそこを調べます。

于 2012-05-09T20:39:24.547 に答える
1

これが関連しているかどうかはわかりませんが、CG ライブラリで同様の問題が発生していました。10.5 とはリンクしますが、10.6 とはリンクしません。最終的に、10.6 sdk ディレクトリがめちゃくちゃになっていることに気付きました。/Developer/SDKs/MacOSX10.6.sdk/Library の代わりに、Frameworks ディレクトリへのシンボリック リンクがあり、Frameworks ディレクトリ内にシンボリック リンクがある Frameworks ディレクトリがありまし。 .

とにかく機能するはずでした(cgフレームワークの絶対パスを指定し、/library/frameworksディレクトリを検索パスに追加しました)が、機能しませんでした。実際、そもそも 10.6 sdk ディレクトリに適切にリンクされたものがなぜ台無しになったのか、私にはわかりません...

于 2012-05-24T14:59:30.137 に答える
0

理由については答えがありますが、方法はわかりません。SDK を 10.6 から 10.5 に変更すると、魔法のように機能しました。しかし、ディスク上の両方の SDK ディレクトリには、正しいフレームワーク ディレクトリへの同一のリンクがあり、これはアップグレードされた 10.5 マシンではなく、クリーンな 10.6 インストールであるため、理由がわかりません。これを説明し、理想的には解決策を提供する答えを書くことができる人なら誰でも、賞金に歓迎されます!

于 2012-05-18T21:14:40.557 に答える