(ダウンロードしたWindowsのSDK内のもの)
をtext3d.cppをコンパイルすると
(bcc32 -W c:\DXSDK\Samples\C++\Direct3D\Text3D)
Error:
外部シンボル'CD3DEnumeration::~CD3DEnumeration()' が未解決
等未解決表示の
CD3DEnumerationのメンバ関連のエラー1個
CD3DApplicationのメンバ関連のエラー7個
CD3DFontのメンバ関連のエラー9個
D3DXMatrixLookAtLHのメンバ関連のエラー1個
が出てきます。
未解決表示のエラーはどうして出てくるのでしょうか?
これらのエラーをなくすにはどうしたらいいでしょうか?
No.5ベストアンサー
- 回答日時:
#4 の「補足」についてです。
今調べて分かったのですが,
d3dx9.lib ってインポートライブラリじゃなくて,
普通のスタティックライブラリなのね。-_-;
よって,COFF2OMF では変換できません。
困りましたねぇ。
d3dx9.lib がらみの関数を使うのはあきらめるか,
(それでも DirectX 自体は使えますから)
Borland 用の DirectX の .lib を作って配布している方がいらっしゃるので,
それを使うしかなさそうです。
"for C++ Builder" といってますが BCC でも使えるでしょう(未確認)
http://clootie.narod.ru/cbuilder/index.html
DirectX 8 用ですが日本語の説明つき
http://www.ecoop.net/coop/translated/Borland/ind …
# text3d.cpp に #include を追加されてますが,その必要はありません。
# 「外部シンボルが未解決」というのはリンク時のエラーです。
# ということは,コンパイル自体は成功しているということですから。
この回答への補足
ありがとうがざいます。
ご指摘のサイトからd3d9x.libをダウンしてボーランドのlibディレクトリに格納すれば
'D3DXCreateFont'だけがエラーとして残りました。
しかしこれはd3d9x.libが実装先です。
そこで同じサイトからD3dx8.libを格納したらリンクエラーは無くなりました。(?)
が、Text3dを実行してみると
プルグラム開始エラー:(これはタイトルバー)
DXD9.DLLファイルは
欠落エクスボート
DDRAW.DLL:DdEntry10にリンクされています。
という!マークアイコン付きのメッセージボックスが出てしまいます。
まことに恐縮ですが何が悪いのでしょうか?
補足の続きです。
DXD9.DLLとDXD9.LIBはパソコン内に存在しません。
DDRAW.DLLはWindows\Systemにあります。
(LIBはTEXT3D.EXEがあるディレクトリにあります。)
No.4
- 回答日時:
#3 の「補足」に関してです。
必要な .lib は,DirectX SDK のヘルプをみれば分かります。
http://www.microsoft.com/japan/msdn/library/defa …
この回答への補足
ありがとうございます。
エラー6つをカバーするhファイルとlibファイルを調べ挙げ
text3d.cppに
#include <D3D9.h>//add
//#include <D3Dx8shape.h>//add入れるとエラー
#include <d3dx9core.h>//add
#include <d3dx9math.h>//add
を追加し
コマンドを
bcc32 -W -WM -VM -w- -Dsqrtf=sqrt -Dexpf=exp -Dasinf=asin -Dsinf=sin -Id:\dxsdk\include -Ic:\Borland\Bcc55\include -ID:\DXSDK\Samples\C++\Common\include -Lc:\Borland\Bcc55\lib -Lc:\Borland\Bcc55\lib\Psdk -etext3d.exe text3d.cpp dxutil.cpp d3denumeration.cpp d3dsettings.cpp d3dapp.cpp d3dfont.cpp d3dutil.cpp d3d9.lib d3dx9.lib D3dx8.lib
にしましたが6つのエラーが一向に消えません。
(hファイルの1つだけは入れると重複定義エラーがいっぱい出てきたのでコメントにして入れませんでした。)
念のため
d3dutil.cpp d3d9.lib d3dx9.lib D3dx8.lib
をtext3d.cppのディレクトリに移動し確かにOMFで有ることを確認しました。
他に思い当たる原因は無いでしょうか?
No.3
- 回答日時:
#1 の「お礼」についてです。
DirectX の .lib をリンクしていないのでは?
'Direct3DCreate9' について調べれば,d3d9.lib が必要なことはすぐに分かりますから,
こいつをリンクしてください。
BCC32 (省略) d3dutil.cpp d3d9.lib
# あと,サンプルにはリソースが含まれてますから,
# これもリンクしないといけないです。
#1 で,
「ソースファイル(.cpp)を一緒にコンパイル,リンクする必要があります。 」
と書きましたが,適切な表現ではありませんでした。
ソースファイルを別々にコンパイルして,
出来上がったオブジェクトファイルをリンクして1つにまとめても構いません。
むしろそうするのが普通です。
http://www.okweb.ne.jp/kotaeru.php3?q=689984
でも出てますが,複数のファイルをコンパイル,リンクしなければならないような場合,
Makefile を作って make ツールを使うと便利です。
余裕があったらこちらも調べてみてください。
この回答への補足
ありがとうございます。
あれからいろいろやってみて
bcc32 -W -WM -VM -w- -Dsqrtf=sqrt -Dexpf=exp -Dasinf=asin -Dsinf=sin -Id:\dxsdk\include -Ic:\Borland\Bcc55\include -ID:\DXSDK\Samples\C++\Common\include -Lc:\Borland\Bcc55\lib -Lc:\Borland\Bcc55\lib\Psdk -etext3d.exe text3d.cpp dxutil.cpp d3denumeration.cpp d3dsettings.cpp d3dapp.cpp d3dfont.cpp d3dutil.cpp d3d9.lib
として
text3d.cppに#include <D3D9.h> を追加し
ラインコマンドにd3dutil.cpp d3d9.libを上のように追加すると
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
text3d.cpp:
dxutil.cpp:
d3denumeration.cpp:
d3dsettings.cpp:
d3dapp.cpp:
d3dfont.cpp:
d3dutil.cpp:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル 'D3DXCreateFont' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXVec3Normalize' が未解決
(C:\_DXTEST\D3DUTIL.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixLookAtLH' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixPerspectiveFovLH' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXCreateTextA' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixRotationAxis' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
となりエラーが1個減りました。
ご指摘の方法でもやりましたが効果は同じで1個減ったきりで他のエラー6個が残ります。
他のクラスがどこに実装されているかgrepコマンドで調べまわったのですがソースレベルでは分かりませんでした。
実態を実装しているlibファイルをgrepで知ることはできないので困っています。
5つエラーで指摘されているクラスは
d3dxmath.hと
d3dx8math.hと
d3dx9math.hで宣言だけされています。
あとは実装先が分かればいいのですが
分からなければlibすべてlinkしないといけないのでしょうか?
No.2
- 回答日時:
> COFF2OMF で変換
> はlibファイルをしらみつぶしに探し回ってすべてCoeff2omfしないといけないのでしょうか?
c:\DXSDK\Lib に入っているのをすべて変換しておけばいいですが,
とりあえず D3DXMatrixLookAtLH を使うのに必要な d3dx9.lib だけでもいいと思います。
> 変換したものを別のディレクトリに入れるとしてそれにパスを通しインストールのときにはいった
> マイクロソフトのDirectXへパスをすべてはずさないといけないのでしょうか?
そうですね,
ライブラリのパスははずしといてください。
この回答への補足
bcc32 -W -WM -VM -Dsqrtf=sqrt -Dexpf=exp -Dasinf=asin -Dsinf=sin -Id:\dxsdk\include -Ic:\Borland\Bcc55\include -ID:\DXSDK\Samples\C++\Common\include -Lc:\Borland\Bcc55\lib -Lc:\Borland\Bcc55\lib\Psdk -etxt3d.exe dxutil.cpp d3denumeration.cpp d3dsettings.cpp d3dapp.cpp d3dfont.cpp d3dutil.cpp
を打ち込むとエラーがやっと1つになりました。
このエラーは
Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照)
ですが今までは-Wを入れ忘れると出てきたものですが今回は-Wををきちんと入れています。
どうしてエラーが出るのでしょうか?
No.1
- 回答日時:
DirectX のバージョンぐらいは書いて欲しいところですが。
おそらく最新版の 9.0なんとか だろうということで話を進めます。
まず,
CD3DEnumeration, CD3DApplication, CD3DFont のメンバ関数が定義されているソースファイル(.cpp)を一緒にコンパイル,リンクする必要があります。
ソースファイルは,
D:\DXSDK\Samples\C++\Common\Src
にあるはずです。
次に,DirectX の DLL 用のインポートライブラリ(d3dx9.lib とか) をリンクする必要があります。
ただし,DirectX SDK に付属しているのは VC++ 用なので,
COFF2OMF で変換するか,IMPLIB で作る必要があります。
参考URL:http://wata.da-shi.org/directx/chapter2.html
この回答への補足
ありがとうございます。
DirectXを昨日ダウンロードしたので最新版です。従来のもの(9)とアップデイト差分(9)をダウンロードしました。
DirectX SDK に付属しているのは VC++ 用なので,
COFF2OMF で変換
はlibファイルをしらみつぶしに探し回ってすべてCoeff2omfしないといけないのでしょうか?
変換したものを別のディレクトリに入れるとしてそれにパスを通しインストールのときにはいったマイクロソフトのDirectXへパスをすべてはずさないといけないのでしょうか?
よろしくお願いします。
すいません。書くところが無いのでここに書きます。
2の補足で入力ミスを確認して新たなエラーメッセージが出ました。
正しい入力は
bcc32 -W -WM -VM -Dsqrtf=sqrt -Dexpf=exp -Dasinf=asin -Dsinf=sin -Id:\dxsdk\include -Ic:\Borland\Bcc55\include -ID:\DXSDK\Samples\C++\Common\include -Lc:\Borland\Bcc55\lib -Lc:\Borland\Bcc55\lib\Psdk -etext3d.exe text3d.cpp dxutil.cpp d3denumeration.cpp d3dsettings.cpp d3dapp.cpp d3dfont.cpp d3dutil.cpp>gomi.txt
です。
-etext3d.exe text3d.cppのところが-etxt3d.exeとなっていました。
エラーメッセージは
Error: 外部シンボル 'Direct3DCreate9' が未解決
(C:\_DXTEST\D3DAPP.OBJ が参照)
Error: 外部シンボル 'D3DXCreateFont' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXVec3Normalize' が未解決
(C:\_DXTEST\D3DUTIL.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixLookAtLH' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixPerspectiveFovLH' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXCreateTextA' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
Error: 外部シンボル 'D3DXMatrixRotationAxis' が未解決
(C:\_DXTEST\TEXT3D.OBJ が参照)
の7つです。
libファイルはすべてc:\boralnd\bcc55\lib\psdkにCoff2omfで移しました。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- クレジットカード 楽天カードの3Dセキュアがエラーになってしまう原因はなんですか? 2 2023/08/06 18:23
- その他(ソフトウェア) ホームページビルダーのバージョンアップ 1 2023/01/15 23:02
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- C言語・C++・C# エラー: ‘inval’ の記憶サイズが不明です。 union semun inival; というエ 2 2023/01/16 22:04
- ロック・パンク・メタル レッド・ツェッペリン 狂熱のライヴ 1 2022/12/02 21:33
- オンラインゲーム パソコン(ゲーム)に詳しい方 3 2023/02/12 21:34
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- 知的財産権 車の3Dモデルの意匠権、著作権について 1 2022/07/16 08:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルエラー:ユーザ定義...
-
マクロ コンパイルがグレーバック
-
VBAを何回も作り直して、容量が...
-
C言語でヘッダファイルにグロー...
-
VB6で開発中…標準モジュール間...
-
<math.h>があるのにsqrtが・...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
CUDAのプログラムを実行できません
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
c言語 文字列の比較
-
外部シンボル "_main"は未解決です
-
[c++] <pthread.h>がinclude で...
-
エクセルのマクロで教えて下さい
-
C++コンパイル時に『 C1083: in...
-
セミコロンについて
-
Borland C++でdirectXのサンプル
-
【VC++6.0(MFC)】警告「LINK : ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
Makefile作成時の拡張子.oとは?
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
” OS ビルド ” の意味が分か...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
C++コンパイル時に『 C1083: in...
-
マクロ コンパイルがグレーバック
-
[c++] <pthread.h>がinclude で...
-
コンパイルエラー:ユーザ定義...
-
ビルドとリビルドの違いを教え...
-
クリティカルエラー Expressio...
-
sys/types.hの必要性について
-
【VC++6.0(MFC)】警告「LINK : ...
-
PRO*C コンパイルエラー
おすすめ情報