2016-12-05 17 views
1

を構築しようとしたとき、私はXcodeのを使用してOSX 10.12のためUETorchを構築しようとしてきたし、次のエラーが発生している:リンカエラーUETorch

Undefined symbols for architecture x86_64: 
    "FlushRenderingCommands()", referenced from: 
     _CaptureScreenshot in Module.UETorch.cpp.o 
     InitCapture(UObject*, IntSize const*, FViewport**, APlayerController**, UWorld**, FSceneView**) in Module.UETorch.cpp.o 
    "FSlateApplication::CurrentApplication", referenced from: 
     _CaptureScreenshot in Module.UETorch.cpp.o 
     FSlateApplication::Get() in Module.UETorch.cpp.o 
    "FSlateApplication::TakeScreenshot(TSharedRef<SWidget, (ESPMode)0> const&, FIntRect const&, TArray<FColor, FDefaultAllocator>&, FIntVector&)", referenced from: 
     _CaptureScreenshot in Module.UETorch.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

ld: symbol(s) not found...部分がしばしばで固定されているように思えlibC++の代わりにlibstdC++を使用して、「その他のリンカフラグ」に-stdlib=libstdc++を追加しようとしましたが、ビルドフェーズのセクションでlibstdC++。6.0.9.dylibをリンクしていますが、まだ同じエラーが発生しています。

答えて

1

私はここにコメントを追加するという評判はありませんが、シンボルを使用しようとすると未定義のシンボルが表示されます。/関数を呼び出すとリンカーは定義を見つけることができません。したがって、定義がライブラリからのものであれば、リンク段階で追加します。 nmコマンドを使用すると、定義がライブラリに存在するかどうかを確認することができます。 "nm -D"

+0

定義はプロジェクトの別の部分(UETorchプラグインではなくUE4ソースコード)にあります。私はこのファイルの先頭にそれを含めようとしましたが、うまくいかないようでした... "nm -D"を実行しようとするとどういうことをお勧めしますか?助けてくれてありがとう! – Bridgo

+1

ファイルの先頭はコンパイル時に役立ちますが、リンカーエラーが発生しているため、リンクステージで問題が発生しています。ソースがある場合は、ライブラリを提供するか、オブジェクトファイルを使用する必要があります。 まず定義があるライブラリを見つける必要があります。ライブラリに "nm -D xxx.so | grep FlushRenderingCommands"を使って定義があることを確認することができます。 –

+0

ああ、それは理にかなっています。私はFlushRenderingCommandsの定義をプロジェクトのどこかにある.cppファイルに見つけることができますが、生成されたオブジェクトファイルがどこに行き、なぜ正しくリンクされないのかわかりません...プロジェクトの他の部分の機能のようです奇妙なリンクOKです。 – Bridgo