Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

FBX

FBX SDK static exe

以前から _AFXDLL となっていたプロジェクトを static にすると,エラーがいっぱい.


今までは,DLL 版のライブラリを使用する様になっていた.
  #if defined (FS_Ver200508)
  // #pragma comment (lib, “FbxSDK_MD.lib”)
  // …
  #elif defined (FS_Ver2011_3_1)
     #ifdef _DEBUG
       #pragma comment (lib, “FbxSDK_md2005D.lib”)
     #else
       #pragma comment (lib, “FbxSDK_md2005.lib”)
     #endif
  #elif defined (FS_Ver2013_3)
     #ifdef _DEBUG
       #pragma comment (lib, “FbxSDK-2013.3-mdD.lib”)
     #else
       #pragma comment (lib, “FbxSDK-2013.3-md.lib”)
     #endif
  #else
       #pragma comment (lib, “LibFbxSDK-MD.lib”)
  #endif


_DLL が定義されているかどうかで振り分け.
  #if defined (_DLL)
     #if defined (FS_Ver200508)
     // …
     #else
       #pragma comment (lib, “LibFbxSDK-MD.lib”)
     #endif
  #else
     #if defined (FS_Ver200508)
     // #pragma comment (lib, “FbxSDK_MT.lib”)
     #elif defined (FS_Ver2011_3_1)
       #ifdef _DEBUG
       #pragma comment (lib, “FbxSDK_mt2005D.lib”)
       #else
       #pragma comment (lib, “FbxSDK_mt2005.lib”)
       #endif
     #elif defined (FS_Ver2013_3)
       #ifdef _DEBUG
       #pragma comment (lib, “FbxSDK-2013.3-mtD.lib”)
       #else
       #pragma comment (lib, “FbxSDK-2013.3-mt.lib”)
       #endif
     #else
       #pragma comment (lib, “LibFbxSDK-MT.lib”)
     #endif
  #endif

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:

FBX の読込で…

FBX の読込で,2013/05 に作成した exe と上の方向の扱いが異なる.

新しくビルドしたものでは,

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:

FBX SDK – 2

2005.08 では,調べたかった事(FBX SDK のコンバート動作)がわからなかったので,今度は 2005.12.1 を選択.
{
  KFbxSdkManager* pSdkManager = NULL ;
  KFbxScene* pScene = NULL ;
  if (!::InitializeSdkObjects(pSdkManager,pScene)) { return -1 ; }
  CString fileFBX = _T(“Test.fbx”) ;
  CString pathEXE = ::GetModuleFileName() ;
  CString pathFBX = ::GetFileDir(pathEXE) + _T(“\\”) + fileFBX ;
  if (::LoadScene(pSdkManager,pScene,pathFBX)) {
    CString pathOTH = pathFBX + _T(“.3ds”) ;
    ::SaveScene(pSdkManager,pScene,pathOTH) ; // ,KFbxExporter::e3D_STUDIO_3DS) ;
    }
  ::DestroySdkObjects(pSdkManager) ;
  }
これをコンソールベースで作成,実行すると,3ds のファイルはできた.
dae はデータによるのかどうかわからないがアプリケーションエラーとなる.
dae ファイルはできているがモデルはなさそう.


ダイアログベースに改良.ファイルをドロップすると以下の変換が通る.
  BOOL CFBXtoDlg::Convert(LPCTSTR filePath)
  {
    KFbxSdkManager* pSdkManager = NULL ;
    KFbxScene* pScene = NULL ;
    if (!::InitializeSdkObjects(pSdkManager,pScene)) { return FALSE ; }
    CString pathSrc = filePath ;
    if (::LoadScene(pSdkManager,pScene,pathSrc)) {
      CString path3DS = pathSrc + _T(“.3ds”) ;
      CString pathOBJ = pathSrc + _T(“.obj”) ;
      CString pathDAE = pathSrc + _T(“.dae”) ;
      ::SaveScene(pSdkManager,pScene,path3DS) ;
      ::SaveScene(pSdkManager,pScene,pathOBJ) ;
      ::SaveScene(pSdkManager,pScene,pathDAE) ;
      }
    ::DestroySdkObjects(pSdkManager) ;
    return TRUE ;
    }
2005.08 の example で出来た fbx などをドロップして変換.
FBXto 2012.12.06
ExportScene03.fbx は,3ds への出力でアプリケーションエラー.


FBXto の VC 6 プロジェクトを VC 8 に.単純に変換して,デバッグ版でビルド,実行すると,
MSVCR80.dll が見つからなかったため
—————————
FBXto.exe – コンポーネントが見つかりません
—————————
MSVCR80.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————
リリース版では,実行可能.


2012/12/10 追記
根本的な解決にはなってないが,2011.3.1 SDK に変更して対応.
FBXto.2011.3.1.zip
FBXto 2011.3.1 SDK

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:

FBX SDK

FBX SDK
FBX SDK Help
FBX SDK Archives


なんとなく FBX 2011.3.1 SDK Static Library を選択
 その中のFBX SDK 2011.3.1 (exe – 459692Kb)


2012/12/05 追記
ここにある一番古い 2005.08 には dsp があるので,VC 6 でいけそう.
examples 内の幾つかのビルドは通り,実行もできる.


新規のコンソール AP のプロジェクトを生成(MFC サポート付き).
examples の ImportScene の main 関数内の一部を _tmain に貼り付け.
プロジェクトのインクルードパスの設定に追加 C:\Program Files\Alias\FBXSDK2005.08\include
同様にリンクの追加ライブラリのパスには   C:\Program Files\Alias\FBXSDK2005.08\Lib
オブジェクトライブラリモジュールへの追加   fbxsdk_md.lib zlib_md.lib
プリプロセッサの定義に次のシンボルを追加 ,K_PLUGIN,K_FBXSDK,K_NODLL,_AFXDLL
プロジェクトの設定は,examples の dsp と比較しながら環境に合ったものに設定.


K_~ が定義されてないと,
——————–構成: T_FBX_2 – Win32 Debug——————–
リンク中…
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: class fbxsdk_2005_08::KFbxScene * __thiscall fbxsdk_2005_08::KFbxSdkManager::CreateKFbxScene(void)” (__imp_?CreateKFbxScene@KFbxSdkManager@fbxsdk_2005_08@@QAEPAVKFbxScene@2@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: static class fbxsdk_2005_08::KFbxSdkManager * __cdecl fbxsdk_2005_08::KFbxSdkManager::CreateKFbxSdkManager(void)” (__imp_?CreateKFbxSdkManager@KFbxSdkManager@fbxsdk_2005_08@@SAPAV12@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: bool __thiscall fbxsdk_2005_08::KFbxSdkManager::DestroyKFbxImporter(class fbxsdk_2005_08::KFbxImporter *)” (__imp_?DestroyKFbxImporter@KFbxSdkManager@fbxsdk_2005_08@@QAE_NPAVKFbxImporter@2@@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: void __thiscall fbxsdk_2005_08::KFbxImporter::SetPassword(char *)” (__imp_?SetPassword@KFbxImporter@fbxsdk_2005_08@@QAEXPAD@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: bool __thiscall fbxsdk_2005_08::KFbxImporter::Import(class fbxsdk_2005_08::KFbxScene &,class KStreamOptions *)” (__imp_?Import@KFbxImporter@fbxsdk_2005_08@@QAE_NAAVKFbxScene@2@PAVKStreamOptions@@@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: void __thiscall fbxsdk_2005_08::KFbxImporter::SetState(enum fbxsdk_2005_08::KFbxImporter::EImportState,bool)” (__imp_?SetState@KFbxImporter@fbxsdk_2005_08@@QAEXW4EImportState@12@_N@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: class fbxsdk_2005_08::KFbxTakeInfo * __thiscall fbxsdk_2005_08::KFbxImporter::GetTakeInfo(int)” (__imp_?GetTakeInfo@KFbxImporter@fbxsdk_2005_08@@QAEPAVKFbxTakeInfo@2@H@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: int __thiscall fbxsdk_2005_08::KFbxImporter::GetTakeCount(void)” (__imp_?GetTakeCount@KFbxImporter@fbxsdk_2005_08@@QAEHXZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: enum fbxsdk_2005_08::KFbxImporter::EFileFormat __thiscall fbxsdk_2005_08::KFbxImporter::GetFileFormat(void)” (__imp_?GetFileFormat@KFbxImporter@fbxsdk_2005_08@@QAE?AW4EFileFormat@12@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: __thiscall KString::~KString(void)” (__imp_??1KString@@QAE@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: void __thiscall fbxsdk_2005_08::KFbxImporter::GetFileVersion(int &,int &,int &)” (__imp_?GetFileVersion@KFbxImporter@fbxsdk_2005_08@@QAEXAAH00@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: static void __cdecl fbxsdk_2005_08::KFbxIO::GetCurrentVersion(int &,int &,int &)” (__imp_?GetCurrentVersion@KFbxIO@fbxsdk_2005_08@@SAXAAH00@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: enum fbxsdk_2005_08::KFbxIO::EError __thiscall fbxsdk_2005_08::KFbxIO::GetLastErrorID(void)” (__imp_?GetLastErrorID@KFbxIO@fbxsdk_2005_08@@QAE?AW4EError@12@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: void __thiscall fbxsdk_2005_08::KFbxImporter::SetFileFormat(enum fbxsdk_2005_08::KFbxImporter::EFileFormat)” (__imp_?SetFileFormat@KFbxImporter@fbxsdk_2005_08@@QAEXW4EFileFormat@12@@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: class fbxsdk_2005_08::KFbxImporter * __thiscall fbxsdk_2005_08::KFbxSdkManager::CreateKFbxImporter(void)” (__imp_?CreateKFbxImporter@KFbxSdkManager@fbxsdk_2005_08@@QAEPAVKFbxImporter@2@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: __thiscall KString::KString(void)” (__imp_??0KString@@QAE@XZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: int __thiscall KString::CompareNoCase(char const *)const ” (__imp_?CompareNoCase@KString@@QBEHPBD@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: class KString __thiscall KString::Right(unsigned int)const ” (__imp_?Right@KString@@QBE?AV1@I@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: unsigned int __thiscall KString::GetLen(void)const ” (__imp_?GetLen@KString@@QBEIXZ)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: int __thiscall KString::ReverseFind(char)const ” (__imp_?ReverseFind@KString@@QBEHD@Z)” は未解決です
T_FBX_2.obj : error LNK2001: 外部シンボル “”__declspec(dllimport) public: __thiscall KString::KString(char const *)” (__imp_??0KString@@QAE@PBD@Z)” は未解決です
Debug/T_FBX_2.exe : fatal error LNK1120: 外部参照 21 が未解決です。
link.exe の実行エラー
T_FBX_2.exe – エラー 22、警告 0


どこが悪いのかよくわからないが,
Detected memory leaks!
Dumping objects ->
{29077} normal block at 0x00DC9DD8, 456 bytes long.
Data: <  p d p p t     > D4 C3 70 00 64 C3 70 00 70 C9 74 00 00 00 00 00
Object dump complete.
スレッド 0x17D0 終了、終了コード 0 (0x0)。
確保されるのは,KFbxImporter::Import(KFbxScene&, KStreamOptions*) を呼出した時.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。