トップページ > 過去ログ > 記事閲覧
リンクエラーについて
名前:しましま 日時: 2011/10/16 02:18

はじめまして Dxlibを使ってゲームを作らせていただいています。 今までは2D関係しか使っていなかったので 3Dモデル関係の関数を使ってみようと思い、 MV1LoadModel()関数をプログラムに追加したところ 1>GameScene.obj : error LNK2019: 未解決の外部シンボル "int __cdecl MV1LoadModel(char const *)" (?MV1LoadModel@@YAHPBD@Z) が 関数 "void __cdecl `anonymous namespace'::Init(void)" (?Init@?A0xec62b613@@YAXXZ) で参照されました。 とのリンクエラーが出力されました。 どうしたら解決できるかお教えください。 リンクエラーなので.libが参照できていないと 思うのですが、この関数をコメントアウトすると 他のDxlibの関数は動作しているようです。 3D関係を使う場合に新しい.libファイルが必要なのでしょうか? よろしくお願い致します。 環境 WindowsXP SP3 VC++2008

Page: 1 |

Re: リンクエラーについて ( No.1 )
名前:いっち 日時:2011/10/16 14:13

DXライブラリのファイル一式すべてをプロジェクトと同じフォルダに入れてビルドした場合も同様の事象になりますか?
Re: リンクエラーについて ( No.2 )
名前:しましま 日時:2011/10/16 16:51

いっちさん早速の返信ありがとうございます。 DXライブラリのファイル一式とは 『プロジェクトに追加すべきファイル_VC用』フォルダ のことでしょうか? このフォルダをプロジェクトと同じフォルダに 入れて見ましたがエラーメッセージは変わりませんでした。 実際に呼び出している部分は下のとおりです。 ModelHandle1 = MV1LoadModel("test.mqo"); コメントアウトすると エラーは出なくなり 直後にあるDxlibの関数DrawBox()などは正常に 画面に□などを表示している状態です。
Re: リンクエラーについて ( No.3 )
名前:いっち 日時:2011/10/16 17:54

私の環境では問題なく使用できます。 私の印象ではヘッダファイル(またはプロトタイプ宣言)がおかしいのではないかと思います。 現在DXライブラリは名前空間 DxLib を使用しているので、 リンクエラーは "int __cdecl DxLib::MV1LoadModel(char const *)" といった表示になるのではないでしょうか。 とりあえず、最新のDXライブラリを使用して MV1LoadModel のサンプルが動作するかお試し下さい。 > h t t p://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R1N1
Re: リンクエラーについて ( No.4 )
名前:しましま(解決) 日時:2011/10/16 23:38

ええと、解決致しました。 サンプルプログラムはしっかりと動きました。 原因は以前から使っていたライブラリのバージョンが2.25bだったことだと思います。 DXライブラリ更新履歴に以下のような記述がありました。 (2009/9/6) 3.00   使用する DirectX のバージョンを 7 から 9 に変更。     3Dモデルを扱う機能や、3D描画に関連した機能の追加。     Direct3D 9 の使用に伴い SetWaitVSyncFlag の仕様が DxLib_Init を     呼び出す前でのみ有効なように変更。 最近、最新のDXライブラリをダウンロードして コピーしていたのですが #include<Dxlib.h> がプリコンパイルヘッダー内にあり、 リビルドなどの際にも放置されて 古いバージョンが使われていたものと思われます。 プリコンパイルヘッダーを使用しないに変更し、 再度リビルドをしたら無事解決しました。 いっちさんにはお手数おかけしてすみませんでした。 アドバイスから解決の糸口を見つけることが出来ました。 ありがとうございました。

Page: 1 |