問題タブ [linker-flags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - XCode の ObjC リンカー フラグ
Google SignInを統合したいSwiftのiOSアプリに取り組んでいます。プロジェクトに Google SDK を正常に統合し、プロジェクトに BillDesk 支払い統合も統合しました (これは billdesk の静的ライブラリですlibBilldesk.a
)。
しかし、プロジェクトを実行すると、Billdesk ライブラリ ( libBilldesk.a
)のエラーが発生し、 duplicate symbol _OBJC_CLASS_$
-ObjC リンカー フラグを削除すると正常にビルドされますが、そのときは Google サインインのエラーが発生します。[__NSDictionaryI gtm_httpArgumentsString]: unrecognized selector sent to instance 0x7f84eb6a2d80
-ObjC
、についてたくさん検索しましたが-force_load
、-all_load
解決策が得られないので、貴重な解決策を考え出してください。
ありがとう
これがこのスクリーンショットです...
ios - XCode : 「リンカー コマンドが終了コード 1 で失敗しました」を解決する方法
私の状況を要約すると: 私は XCode7 Objective-C で作業しており、iOS 7.1 を搭載した iPhone 4 でデバッグしており、Wikitude SDK (拡張現実フレームワーク) の例を実装したいと考えています。
これが私の問題です。
必要なすべての .frameworks を追加したときの手順に従って、Build Settings >> Other linker flags に「-ObjC」を追加する必要があります。私が行うと、コードはもうコンパイルされません
同じ問題に遭遇した人々の解決策をたくさん読んだことがあります。「ビットコードを有効/無効にする」や「アセンブリをチェックする」など、うまくいかなかった他の多くのこと
また、これまで XCode を使用したことがなく、Objective-C は私にとってまったく新しいものです。ソリューションを構築するために従うサンプル コードも Objective-C にあり、それを自分で迅速に変換できないため、Objective-C を使用することを余儀なくされています。2週間前のようにXCodeも更新しました。
誰かが私に簡単な説明をしたり、この問題のロックを解除するために何を確認/実行する必要があるかについてのガイドラインを教えてくれたりすると、それは非常に素晴らしいことであり、次の問題に役立つかもしれません. 前もって感謝します。
-ObjC リンカー フラグを追加したときに発生するエラーの完全なログを次に示します。 完全なログ
更新 ようやく機能するようになりましたが、方法がわかりません。真のエラーは「リンカー コマンド...」ではなく、アーキテクチャ タイプ (エラー: アーキテクチャ タイプ x86_64 が見つかりません) でした
これが私がやったことすべてをおおよその順序で示したものです
- チェック:一般>>リンクされたフレームワークとライブラリ:何も欠けていないように
- チェック済み:ビルドフェーズ>>バイナリをライブラリとリンク:何も欠けていないように
- 変更: ビルド設定 >> アーキテクチャ >> アーキテクチャ: armv7、armv7s
- チェックあり:ビルド設定>>アーキテクチャ>>アクティブなアーキテクチャのみをビルド:はい(デバッグ)
- 変更: ビルド設定 >> アーキテクチャ >> 有効なアーキテクチャ: armv7、armv7s
- 削除済み : ウィンドウ >> プロジェクト >> myProject >> 派生データ : 削除
- きれいなプロジェクト
- iPhoneを差し込んだ
- iPhone で実行してみる: 失敗
- 無効: ビルド設定 >> ビルド オプション >> ビットコードを有効にする
- iPhone で再度実行: 成功
xcode - XcodeでFOLDERSをコンパイルから除外する方法は?
これと回答をstackOで見ましたが、フォルダーを除外する方法が見つかりませんでした。
多くの .h 、 .m 、および .mm を含む 3 つのフォルダーがあり、それらを一時的に除外する必要がありますが、参照を削除する必要はありません。どうやってやるの?
opencv - リンカーフラグをcmakeに正しく追加するには?
私はビルドしていて、カスタム パスにインストールされているopencv-3.1.0
を使用したいと考えています。通常、リンカーは私にエラーを与えます:ffmpeg
/media/sdcard/usr/lib
/media/sdcard/usr/include
だから私はいくつかの追加のフラグをcmakeに与えました: -DCMAKE_SHARED_LINKER_FLAGS="--library-path /media/sdcard/usr/lib", DCMAKE_INCLUDE_PATH=/media/sdcard/usr/include
. インクルードはまったく機能していないようですが、リンカーフラグに関してcmake
は、次の出力が得られました。
しかし、実行しようとするとmake
、エラーが発生しました。
c++: error: unrecognized command line option '--library-path'
私のldは「--library-path」フラグを知っており、必要なライブラリを見つけます。
それは私に与えます
プロセス全体の基本的な理解が欠けている可能性があります。
c - -rdynamic でコンパイルされたプログラムによってロードされている場合でも、ローカル シンボルを優先するように共有オブジェクトをコンパイルできますか?
ソースにアクセスできないプログラムによって動的にロードされる共有ライブラリを C で構築しています。ターゲット プラットフォームは 64 ビットの Linux プラットフォームであり、ビルドには gcc を使用しています。問題の再現を 100 行以内で作成できましたが、まだ少し読む必要があります。うまくいけば、それは説明的です。
中心的な問題は、共有ライブラリで2 つの非静的関数 (bar
および) が定義されていることです。baz
呼び出し元がそれらを dlsym できることが期待されるため、両方とも非静的である必要があります。さらに、 をbaz
呼び出しますbar
。私のライブラリを使用しているプログラムには、bar
通常は問題にならないという名前の関数もありますが、共有ライブラリで呼び出す必要-rdynamic
がある関数があるため、呼び出しプログラムは でコンパイルされます。foo
その結果、共有ライブラリが実行時に呼び出しプログラムのバージョンにリンクされてしまいbar
、直感的でない結果が生成されます。
理想的な世界では、共有ライブラリをコンパイルするときに、これを防ぐコマンド ライン スイッチを含めることができます。
私が持っている現在の解決策は、非静的関数の名前を変更し、funname_local
それらを静的に宣言することです。次に、新しい関数 を定義
し、共有ライブラリ内の へのfunname() { return funname_local(); }
参照を に変更します。これは機能しますが、面倒に感じます。リンカに、ローカル コンパイル ユニットで定義されたシンボルを優先するように指示するだけで十分です。funname
funname_local
internal.c
内部.h
main.c
main.h
共有.c
コンパイル:
走る:
r - R内からLD_LIBRARY_PATHを設定する
R パッケージをインストールしましたが、 経由library
でロードするには、LD_LIBRARY_PATH をライブラリの 1 つが配置されているパスに設定する必要がlibhts.so.2
あります。読み込みは、後でではなく、 R に入る前に LD_LIBRARY_PATH を編集する場合にのみ機能します。
これを解決するために、いくつかの異なる方法を試しました。
configure
R パッケージにあるスクリプトから変更された LD_LIBRARY_PATH をエクスポートします。configure
同じスクリプト内で共有ライブラリへのソフト リンクを作成します。
どちらも機能していません.Rが起動すると、LD_LIBRARY_PATHの結果を格納する変数があるようです。おそらく解決策はその変数を編集することです。