(FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tapintohigh

(FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#1

投稿記事 by tapintohigh » 8年前

こんにちは

3Dについて学ぼうと思い、FBXファイルを使ってみようと思ったのですが、件名にあるように、「fatal error LNK1120: 外部参照 8 が未解決です」というエラーがでてしまい、先に進めません。

状況としましては、VC++ 2010 Express を使っていて、プロジェクトのプロパティから"C/C++"の"全般"で、"追加のインクルードディレクトリ"に"fbksdk.h"の入った"include"フォルダを置き、"リンカー"の"全般"において"追加のライブラリディレクトリ"というところに"lib"フォルダを置きました。

おそらくライブラリとリンクができていないということなのでしょうが、まだ知識があいまいな点が多く、なぜなのかがわかりません。
以下にコードとエラーのログを貼らせていただきます。
情報が足りないようでしたら追加させていただきます。

非常に困っています。どうかよろしくお願いいたします。

<main.cpp>

コード:

#include<tchar.h>
#include"fbxsdk.h"

int _tmain(int argc, _TCHAR* argv[]){
	//create SDK manager
	FbxManager *pSdkManager = FbxManager::Create();
	return 0;
}
<ログ>
1>------ ビルド開始: プロジェクト: HelloFBX, 構成: Debug Win32 ------
1>main.obj : error LNK2019: 未解決の外部シンボル "public: static class fbxsdk::FbxManager * __cdecl fbxsdk::FbxManager::Create(void)" (?Create@FbxManager@fbxsdk@@SAPAV12@XZ) が関数 _main で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall fbxsdk::FbxString::~FbxString(void)" (??1FbxString@fbxsdk@@QAE@XZ) が関数 "public: __thiscall fbxsdk::FbxPair<class fbxsdk::FbxString const ,class fbxsdk::FbxObject *>::~FbxPair<class fbxsdk::FbxString const ,class fbxsdk::FbxObject *>(void)" (??1?$FbxPair@$$CBVFbxString@fbxsdk@@PAVFbxObject@2@@fbxsdk@@QAE@XZ) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl fbxsdk::_FbxAssert(char const *,char const *,unsigned int,bool,char const *,...)" (?_FbxAssert@fbxsdk@@YAXPBD0I_N0ZZ) が関数 "public: class fbxsdk::FbxPair<class fbxsdk::FbxRedBlackTree<class fbxsdk::FbxMap<class fbxsdk::FbxString,class fbxsdk::FbxObject *,struct fbxsdk::FbxStringCompare,class fbxsdk::FbxBaseAllocator>::KeyValuePair,struct fbxsdk::FbxStringCompare,class fbxsdk::FbxBaseAllocator>::RecordType *,bool> __thiscall fbxsdk::FbxRedBlackTree<class fbxsdk::FbxMap<class fbxsdk::FbxString,class fbxsdk::FbxObject *,struct fbxsdk::FbxStringCompare,class fbxsdk::FbxBaseAllocator>::KeyValuePair,struct fbxsdk::FbxStringCompare,class fbxsdk::FbxBaseAllocator>::Insert(class fbxsdk::FbxMap<class fbxsdk::FbxString,class fbxsdk::FbxObject *,struct fbxsdk::FbxStringCompare,class fbxsdk::FbxBaseAllocator>::KeyValuePair const &)" (?Insert@?$FbxRedBlackTree@VKeyValuePair@?$FbxMap@VFbxString@fbxsdk@@PAVFbxObject@2@UFbxStringCompare@2@VFbxBaseAllocator@2@@fbxsdk@@UFbxStringCompare@3@VFbxBaseAllocator@3@@fbxsdk@@QAE?AV?$FbxPair@PAVRecordType@?$FbxRedBlackTree@VKeyValuePair@?$FbxMap@VFbxString@fbxsdk@@PAVFbxObject@2@UFbxStringCompare@2@VFbxBaseAllocator@2@@fbxsdk@@UFbxStringCompare@3@VFbxBaseAllocator@3@@fbxsdk@@_N@2@ABVKeyValuePair@?$FbxMap@VFbxString@fbxsdk@@PAVFbxObject@2@UFbxStringCompare@2@VFbxBaseAllocator@2@@2@@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "void * __cdecl fbxsdk::FbxMalloc(unsigned int)" (?FbxMalloc@fbxsdk@@YAPAXI@Z) が関数 "public: void * __thiscall fbxsdk::FbxBaseAllocator::AllocateRecords(unsigned int)" (?AllocateRecords@FbxBaseAllocator@fbxsdk@@QAEPAXI@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "public: int __thiscall fbxsdk::FbxString::Compare(char const *)const " (?Compare@FbxString@fbxsdk@@QBEHPBD@Z) が関数 "public: int __thiscall fbxsdk::FbxStringCompare::operator()(class fbxsdk::FbxString const &,class fbxsdk::FbxString const &)const " (??RFbxStringCompare@fbxsdk@@QBEHABVFbxString@1@0@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall fbxsdk::FbxString::operator char const *(void)const " (??BFbxString@fbxsdk@@QBEPBDXZ) が関数 "public: int __thiscall fbxsdk::FbxStringCompare::operator()(class fbxsdk::FbxString const &,class fbxsdk::FbxString const &)const " (??RFbxStringCompare@fbxsdk@@QBEHABVFbxString@1@0@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl fbxsdk::FbxFree(void *)" (?FbxFree@fbxsdk@@YAXPAX@Z) が関数 "public: void __thiscall fbxsdk::FbxBaseAllocator::FreeMemory(void *)" (?FreeMemory@FbxBaseAllocator@fbxsdk@@QAEXPAX@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall fbxsdk::FbxString::FbxString(class fbxsdk::FbxString const &)" (??0FbxString@fbxsdk@@QAE@ABV01@@Z) が関数 "public: __thiscall fbxsdk::FbxPair<class fbxsdk::FbxString const ,class fbxsdk::FbxObject *>::FbxPair<class fbxsdk::FbxString const ,class fbxsdk::FbxObject *>(class fbxsdk::FbxString const &,class fbxsdk::FbxObject * const &)" (??0?$FbxPair@$$CBVFbxString@fbxsdk@@PAVFbxObject@2@@fbxsdk@@QAE@ABVFbxString@1@ABQAVFbxObject@1@@Z) で参照されました。
1>c:\users\taiju\documents\visual studio 2010\Projects\HelloFBX\Debug\HelloFBX.exe : fatal error LNK1120: 外部参照 8 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

かずま

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#2

投稿記事 by かずま » 8年前

tapintohigh さんが書きました: おそらくライブラリとリンクができていないということなのでしょうが、まだ知識があいまいな点が多く、なぜなのかがわかりません。
プロジェクトのプロパティで、「リンカ」の「全般」の「追加の依存ファイル」の設定をしていないのでは?
http://marupeke296.com/FBX_No1_Install.html

かずま

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#3

投稿記事 by かずま » 8年前

かずま さんが書きました:プロジェクトのプロパティで、「リンカ」の「全般」の「追加の依存ファイル」の設定をしていないのでは?
ちょっと訂正。「リンカ」の「入力」の「追加の依存ファイル」ですね。
私、FBX のことは何にも知りません。「fbxsdk インストール」でググっただけです。
検索で出てくることをなんでもかんでも質問するのはいかがなものかと思います。

tapintohigh

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#4

投稿記事 by tapintohigh » 8年前

かずまさん、

返信ありがとうございます。

私も貼っていただいたページもしっかり見て、書かれているとおりに何度もトライしてみたのですが、それでもうまくいきませんでした。
なぜ最初の質問の時にそのことを書いていなかったのかというと、自分で追加の依存ファイルについて調べはしたのですが、よく理解できず、自分が理解できていないことを、さもできているかのように質問するのも違うかなと思ったからです。
しかし自分が追加の依存ファイルということに関して理解できていないということを投稿時の質問に書いておくべきだと思いました。
大晦日のお忙しい時期にせっかく返信をいただいたのに、申し訳ありませんでした。

どのように追加の依存ファイルを設定しようとしたのかというと、私のインストールしたSDKには"fbxsdk_md2010d.lib"というファイルがなかったので(もちろん一度は試しました)、自分のインストールしたlibフォルダ中の"libfbxsdk.lib", "libfbxsdk-md.lib", "libfbxsdk-mt.lib"を試してみたのですが、これらもうまくはいきませんでした。

どこかお気づきの点があれば、よろしくお願いいたします。

かずま

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#5

投稿記事 by かずま » 8年前

http://help.autodesk.com/view/FBX/2016/ ... 841B7C_htm
英語だけど、設定方法がかなり詳しく書かれています。

プロパティの「C/C++」の「コード生成」の「ランタイムライブラリ」で「/MDd」を選んだら、
「リンカー」の「全般」の「追加のライブラリディレクトリ」は
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\lib\vs2010\x64\debug

「リンカー」の「入力」の「追加のライブラリディレクトリ」は
wininet.lib;libfbxsdk-md.lib

そして、「C/C++」の「プリプロセッサ」の「プリプロセッサの定義」は
FBXSDK_SHARED を追加して、WIN32;_DEBUG;_CONSOLE;_LIB;FBXSDK_SHARED
になるのではないでしょうか?

かずま

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#6

投稿記事 by かずま » 8年前

かずま さんが書きました:「リンカー」の「入力」の「追加のライブラリディレクトリ」は
wininet.lib;libfbxsdk-md.lib
また、間違えました。
「リンカー」の「入力」の「追加の依存ファイル」はです。

tapintohigh

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#7

投稿記事 by tapintohigh » 8年前

かずまさん、

返信ありがとうございます。

貼っていただいたリンクのページは自分では見つけれていなかったので、非常に助かったのですが、いまだにうまく動作しません。
以下に、どのようにプロパティの設定をしたのかと、現在のエラーの状況を報告させていただきます。コードのほうも一応再掲させていただきます。

まずプロパティに関してですが、「C/C++」の「コード生成」の「ランタイムライブラリ」で「/MDd」を選択し、

同じく「C/C++」の「全般」の「追加のインクルードディレクトリ」では
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\include

「リンカー」の「全般」の「追加のライブラリディレクトリ」は
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\lib\vs2010\x64\debug

同じく「リンカー」の「入力」の「追加の依存ファイル」は
libfbxsdk-md.lib
wininet.lib

同じく「リンカー」の「入力」の「特定の既定のライブラリの無視」は
LIBCMT
(ページ中におけるstep 16です)

そして、「C/C++」の「プリプロセッサ」の「プリプロセッサの定義」に
FBXSDK_SHARED
を追加しました。
(ページ中の説明ではFBXSDKの動的ライブラリを使っている場合にのみ設定するべき内容であると書いてあったのですが、追加してみたところ”外部参照8”が”外部参照1”にまで減ったので、追加したままにしています。)

<エラーのログ>
1>------ ビルド開始: プロジェクト: HelloFBX2, 構成: Debug Win32 ------
1> main.cpp
1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: static class fbxsdk::FbxManager * __cdecl fbxsdk::FbxManager::Create(void)" (__imp_?Create@FbxManager@fbxsdk@@SAPAV12@XZ) が関数 _main で参照されました。
1>c:\users\taiju\documents\visual studio 2010\Projects\HelloFBX2\Debug\HelloFBX2.exe : fatal error LNK1120: 外部参照 1 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========


<main.cpp>

コード:

#include<tchar.h>
#include"fbxsdk.h"

int _tmain(int argc, _TCHAR* argv[]){
	FbxManager* manager = FbxManager::Create(); 

	return 0;
}
年末年始のお忙しい時期に丁寧な返信をしていただいているのに、うまくできず申し訳ないです。
お気づきの点があれば、またよろしくお願いいたします。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#8

投稿記事 by ISLe » 8年前

VC++2010Expressをふつうにインストールしただけなら、32ビット版のバイナリしか扱えないのでは。
x64は64ビット版なので。

tapintohigh

Re: (FBX)「fatal error LNK1120: 外部参照 8 が未解決です」というエラーが出てしまいます

#9

投稿記事 by tapintohigh » 8年前

ISLeさん、

返信ありがとうございます。

x64かx86の選択において、自分のOSと同じものを選べばいいと思っていたので、間違っていました。

ご指摘の通り、「リンカー」の「全般」の「追加のライブラリディレクトリ」を
C:\Program Files\Autodesk\FBX\FBX SDK\2016.1.2\lib\vs2010\x86\debug
に変更し、

以前かずまさんに教えていただいた、Autodesk社のヘルプページ(URL: http://help.autodesk.com/view/FBX/2016/ ... 841B7C_htm)の「Important notes on preprocessor definitions for your projects」に書いてあるように、動的なライブラリを使った場合は「プリプロセッサの定義」に「FBXSDK_SHARED」を追加しなければいけないのですが、私が今回使ったRuntime Libraryは「MDd」で、「Static Linking」であると明示されているので、以前追加していたこれを削除しました。

以上の2つの変更点により、無事動作しました。

これでやっと自分が本来したかった勉強に取り組めます。
本当に助かりました。
お2人とも、どうもありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る