Re: DXライブラリの軽量化再コンパイルについて ( No.1 ) |
- 名前:管理人 日時:2015/01/06 01:49
DXライブラリのソースパッケージの DxLibMake フォルダの中に
「DxUseCLib スタティックリンクライブラリについて.txt」
というファイルがあり、そこに DxUseCLib.lib について記載されていますので
よろしければご覧ください
尚、libjpeg の使用バージョンについて 9a となっていますが、9 の誤りです m(_ _;m
( 現在アップされているソースパッケージ内の txt はもう修正してあります )
「DxUseCLib スタティックリンクライブラリについて.txt」の内容で不明な点がありましたらお訊ねください
|
Re: DXライブラリの軽量化再コンパイルについて ( No.2 ) |
- 名前:チップ 日時:2015/01/06 19:36
ご返答ありがとうございます。
教えて頂いた方法でヘッダを修正して軽量化バージョンのスタティックリンクライブラリを作成したのですが、
これと再コンパイルしたDXライブラリを使ってコンパイルすると必ず下記のエラーが出てしまいます。
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
プログラム自体は動作テストのため本当に立ち上がって終了するだけの単純なものです。
何か問題点にお心当たりはありますでしょうか?
宜しくお願い致します。
|
Re: DXライブラリの軽量化再コンパイルについて ( No.3 ) |
- 名前:管理人 日時:2015/01/07 00:06
動作テスト用のプロジェクトで使用するランタイムライブラリが「マルチスレッド DLL (/MD)」に
なってしまっているのが原因だと思います
プロジェクトのプロパティの「構成プロパティ」→「C/C++」→「コード生成」を選択した状態で
右側に表示される「ランタイムライブラリ」の設定を「マルチスレッド (/MT)」に変更してビルドしてみてください
|
Re: DXライブラリの軽量化再コンパイルについて ( No.4 ) |
- 名前:チップ 日時:2015/01/07 06:48
管理人様
動作テストプロジェクトの「ランタイムライブラリ」の設定は「マルチスレッド (/MT)」になっているようです。
ちなみにスタティックライブラリをダウンロードしたままの本来のものに戻すとエラーは出ずにコンパイルは通ります。
|
Re: DXライブラリの軽量化再コンパイルについて ( No.5 ) |
- 名前:管理人 日時:2015/01/08 00:28
うーんそうでしたか
ん?リンクエラーを改めて拝見すると・・・
ti_inst.cpp というファイルはありますでしょうか?
ソリューションエクスプローラーに表示されている ti_inst.cpp にカーソルを合わせて右クリックを
すると出てくるメニューの中に「プロパティ」があるので、クリックしてプロパティを表示してみてください
その中にプロジェクトのプロパティと同じように「コード生成」の項目があり、「ランタイムライブラリ」の設定もできますので、
ランタイムライブラリの設定が「マルチスレッド DLL (/MD)」になってしまっていないか確認してみて頂けないでしょうか?
ソースファイル別にランタイムライブラリの設定が行えることを失念していました・・・
|
Re: DXライブラリの軽量化再コンパイルについて ( No.6 ) |
- 名前:チップ 日時:2015/01/08 05:59
お手数かけさせて何度もすみませんです…
ti_inst.cpp というファイルはないです。
プログラムは下記の
#include <stdio.h>
#include <stdlib.h>
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
ほぼ何もないものでも同様のエラーが出ますので
やはりスタィックライブラリの作成で何かしくじっているのだろうなと・・・。
|
Re: DXライブラリの軽量化再コンパイルについて ( No.7 ) |
- 名前:チップ 日時:2015/01/08 06:03
軽量化のためにとりあえずUseClibに関わる
Defineを外して下記のソースをスタティックライブラリとしてコンパイルしたのですが何かこの時点でしくじっているのでしょうか。
Libファイルは無事出来ていたのですが・・・
DxUseCLib.cpp
DxUseCLibOgg .cpp
DxUseCLibPhysics.cpp
DxUseCStrmBaseFilter.cpp
Windows\DxUseCLibOggD3D9.cpp
Windows\DxUseCLibOggD3D11.cpp
Windows\DxUseCLibOggWin.cpp
|
Re: DXライブラリの軽量化再コンパイルについて ( No.8 ) |
- 名前:管理人 日時:2015/01/09 00:06
ti_inst.cpp はプロジェクトにありませんでしたか、失礼しました・・・
> Defineを外して下記のソースをスタティックライブラリとしてコンパイルしたのですが何かこの時点でしくじっているのでしょうか。
そうですね・・・
DxUseCLib.lib を作成するプロジェクトの件の設定が「マルチスレッド DLL (/MD)」になってしまっていませんでしょうか?
あと、DxCompileConfig.h の設定を変更した場合は DxUseCLib.lib とあわせて DxLib.lib もコンパイルしなければ
ならないのですが、チップさんは DxUseCLib.lib だけをコンパイルされているのでしょうか?
|
Re: DXライブラリの軽量化再コンパイルについて ( No.9 ) |
- 名前:チップ(解決済) 日時:2015/01/09 07:49
>DxUseCLib.lib を作成するプロジェクトの件の設定が「マルチスレッド DLL (/MD)」になってしまっていませんでしょうか?
ご指摘の通りでした。
DxUseCLib.libの設定をマルチスレッド(/MT)」にしたところ無事にコンパイルが通りました。
こちらの素人質問に逐一ご丁寧に返答頂き
本当にありがとうございました!
|