他の

アーキテクチャx86_64でMacエラーシンボルが見つかりません

オリジナルポスター
2016年7月22日
  • 2016年7月22日
みなさん、こんにちは。

私はMacでWindowsアプリケーションをコンパイルすることからなるプロジェクトに取り組んでいます。アプリケーションはQtを使用してC ++で記述されています。ライブラリとメインプロジェクトで構成されています:
http://hpics.li/d8bb2ec
プロジェクトは、外部ライブラリODAを使用して、.dwgファイルと.dgnファイルを管理します。
問題は、最初のライブラリ(MdCore)をコンパイルすると、エラーが発生することです。アーキテクチャx86_64のシンボルが見つかりません。
最初に-stdlib = libstdc ++をqmake引数に追加しましたが、Qtが0バイトのファイルを生成したため、解決策ではありませんでした。
私はODAライブラリの異なるバージョンを試しました:OSX 10.7および10.11用に32ビット、64ビット。 (私のMacはOSX 10.11上にあります)
ライブラリでコマンド「ファイル」を作成し、ここで出力を作成しました。


.a:現在のarアーカイブランダムライブラリ

.dylib:
2つのアーキテクチャを備えたMach-0ユニバーサルバイナリ
(アーキテクチャx68_64の場合):Mach-064ビット動的リンク共有ライブラリx86_64
(アーキテクチャi386の場合):Mach-0動的リンク共有ライブラリi386

32ビットと64ビットでコンパイルしようとしましたが、何も変わりません。私はこの問題に2週間取り組んでいます。何ができるかわかりません。

私はQtフォーラムでトピックを作成しました。多分あなたはより多くの情報を見つけることができます:
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
https://forum.qt.io/topic/69171/compile-generate-0-byte-files-on-os-x/11
誰かが手がかりや解決策を持っているなら私は興味があります

ありがとう ! NS

cqexbesd

2009年6月4日


ドイツ
  • 2016年7月22日
qmakeについては何も知りませんが、コンパイラコマンドのコンパイル内容を投稿するだけで、誰かが何が悪いのかを知ることができるかもしれません。

オリジナルポスター
2016年7月22日
  • 2016年7月22日
こんにちはcqexbesd、あなたの答えに感謝します、ここにビルド出力の始まりがあります:

17:34:10:開始: '/ Users / developpement / Qt / 5.7 / clang_64 / bin / qmake' /Users/developpement/Desktop/Mediacad2/MdCore/MdCore.pro -r -spec macx-clang CONFIG + = debug CONFIG + = x86_64 CONFIG + = qml_debug

17:34:10:プロセス '/Users/developpement/Qt/5.7/clang_64/bin/qmake'は正常に終了しました

17:34:10:開始: '/ usr / bin / make'

..。 NS

cqexbesd

2009年6月4日
ドイツ
  • 2016年7月24日
私が意味したのは、qmakeはコンパイラを呼び出すための単なるツールであるということでした。 qmakeがコンパイラを呼び出す行を見つけることができますか?おそらく、正しく呼び出されていないか、動作している可能性があります。少なくともどこかで始めましょう。

オリジナルポスター
2016年7月22日
  • 2016年7月25日
私はそれがここにあると思います:
コード:Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.8 -Wall -W -fPIC -DMDCORE_LIBRARY -D_TOOLKIT_IN_DLL_ -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../MdCore -I. -I../../include -I../../include/teigha -I../../include/Extensions/ExServices -I../../include/Extensions/win -I../../include/Extensions/win/Crypt -I../../../../Qt/5.7/clang_64/lib/QtWidgets.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtGui.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I../../../../Qt/5.7/clang_64/mkspecs/macx-clang -F/Users/developpement/Qt/5.7/clang_64/lib -o mduserio.o ../../MdCore/mduserio.cpp
コンパイル出力にこれらの行が数回ありますが、最後の行だけが変更されます(ファイルの名前が変更されます)

編集:ここに同じ行がありますが、それらの間にスペースがあります
コード:Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.8 -Wall -W -fPIC -DMDCORE_LIBRARY -D_TOOLKIT_IN_DLL_ -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../MdCore -I. -I../../include -I../../include/teigha -I../../include/Extensions/ExServices -I../../include/Extensions/win -I../../include/Extensions/win/Crypt -I../../../../Qt/5.7/clang_64/lib/QtWidgets.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtGui.framework/Headers -I../../../../Qt/5.7/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AGL.framework/Headers -I../../../../Qt/5.7/clang_64/mkspecs/macx-clang -F/Users/developpement/Qt/5.7/clang_64/lib -o mduserio.o ../../MdCore/mduserio.cppモデレーターによる最終編集:2016年7月25日 NS

cqexbesd

2009年6月4日
ドイツ
  • 2016年7月25日
リンク線も必要です-例: -c引数なしでclang ++が呼び出される行。実際に出力全体へのリンクを貼り付けることができれば便利かもしれません。

オリジナルポスター
2016年7月22日
  • 2016年7月26日
コンパイラの引数を変更することはできないと思います。私はプロンプトでそれをするかもしれません。
これが完全な出力です(非常に長いです!100.000行): http://textup.fr/171939hC


編集:プロンプトを使用してコンパイルしたので、出力にさらに行があり、最後の行は興味深いものです:


アーキテクチャx86_64の未定義のシンボル:

コード: '_CFArrayGetCount', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFArrayGetValueAtIndex', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFLocaleCopyPreferredLanguages', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFStringGetCharacterAtIndex', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o '_CFStringGetLength', referenced from: ExSystemServices::ExSystemServices() in ExSystemServices.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [../debug/libMdCore.1.0.0.dylib] Error 1モデレーターによる最終編集:2016年7月26日 NS

cqexbesd

2009年6月4日
ドイツ
  • 2016年7月26日
最も複雑なシステム以外からのビルドの100K出力は、おそらくどこかで問題が発生したことを示していると思いますが、それは業界の状態についてのより一般的なコメントです。

特定の問題に戻ります。 「完全な出力」に投稿したリンクエラーは表示されませんが、これは通常のリンカーエラーのようです。他のプラットフォームと同様に、nm(またはGoogle)を使用して、これらのシンボルが定義されている場所を見つけることができます。これは、/ System / Library / Frameworks / CoreFoundation.framework / Versions / A / CoreFoundationにあるように見えます(ただし、非常に古いマックなので、あなたには当てはまらないかもしれません)。

そのライブラリに直接リンクすることはありません。コードを追加してみてください:-framework CoreFoundationリンカフラグに。

オリジナルポスター
2016年7月22日
  • 2016年7月27日
はい、あなたは正しいです!今すぐコンパイルできるので、どうもありがとうございました!私はこの問題に3週間直面していました!どうもありがとう !

ジビー

2019年2月5日
  • 2019年2月5日
cqexbesdは次のように述べています。最も複雑なシステム以外からのビルドの100K出力は、おそらくどこかで問題が発生したことを示していると思いますが、それは業界の状態に関するより一般的なコメントです。

特定の問題に戻ります。 「完全な出力」に投稿したリンクエラーは表示されませんが、これは通常のリンカーエラーのようです。他のプラットフォームと同様に、nm(またはGoogle)を使用して、これらのシンボルが定義されている場所を見つけることができます。これは、/ System / Library / Frameworks / CoreFoundation.framework / Versions / A / CoreFoundationにあるように見えます(ただし、非常に古いマックなので、あなたには当てはまらないかもしれません)。

そのライブラリに直接リンクすることはありません。コードを追加してみてください:-framework CoreFoundationリンカフラグに。

ジビー

2019年2月5日
  • 2019年2月5日
こんにちはみんな...私は非常によく似た問題に遭遇しました...しかし私はコンパイルにターミナルを使用しています...誰かがターミナルの場合に同じ解決策をどのように行うことができるかについて助けてもらえますか?

./configureファイルの準備ができていて、スムーズに実行されますが、ffi ...関連の「シンボルが見つかりません...」とmakeを実行したときにリンカーと関係があります

okieiam

2016年12月17日
  • 2019年2月8日
zibbiは言った:こんにちはみんな...私は非常によく似た問題に遭遇しました...しかし私はコンパイルにターミナルを使用しています...誰かがターミナルの場合に同じ解決策をどのように行うことができるかについて助けてもらえますか?

./configureファイルの準備ができていて、スムーズに実行されますが、ffi ...関連の「シンボルが見つかりません...」とmakeを実行したときにリンカーと関係があります
env CPPFLAGS = '-I / home / foo / sw / include' LDFLAGS = '-L / home / foo / sw / lib /'./configure