トップページ > 記事閲覧
マルチスレッドDLL環境下でのコンパイル
名前:PsychEpiphysis 日時: 2014/12/08 20:36

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11115007681 ttp://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/computer/cpp/vc_runtime/disp_content に類似の状況が発生しております。 当方が開発しているアプリにDirectInput部分を導入しようとしています。 既存のシステムがVisualStudio2010のC++で、/MD(マルチスレッドDLL)で作られており、共存したいのですが、どうにも「sprintfは既に定義されています」などのエラーが取れません。 上記後者のサイトだと 「/MT で作成されているライブラリを、/MD のアプリケーションで 利用しようとするとわーにんぐが出る」となっていますが、LIBCMTD.libのエラーになりますね。 マルチスレッドDLL環境下で使うためにはどのようにすればよいでしょうか?
メンテ

Page: 1 |

Re: マルチスレッドDLL環境下でのコンパイル ( No.1 )
名前:管理人 日時:2014/12/09 02:09

ビルドでリンクする lib ファイルを全て「マルチスレッドDLL」の設定でビルドしたものに 置き換える必要があります ただ、DirectInput の機能のみ使用するとのことでしたら、zlib.lib や libjpeg.lib などは リンクする必要が無いと思いますので、以下のようにしていただければリンクエラーは発生しなくなると思います 1.DxCompileConfig.h の、少なくとも以下の定義のコメントアウトを外して、各種外部 lib ファイルをリンクしないようにする DX_NON_BULLET_PHYSICS DX_NON_TIFFREAD DX_NON_PNGREAD DX_NON_JPEGREAD DX_NON_OGGVORBIS DX_NON_OGGTHEORA 2.1の定義を有効にした状態で DxLib.lib, DxLib_d.lib と DxUseCLib.lib, DxUseCLib_d.lib をビルドして作成する 3.2で作成した lib ファイルを使用して /MD のプロジェクトをビルドする よろしければお試しください m(_ _)m
メンテ
Re: マルチスレッドDLL環境下でのコンパイル ( No.2 )
名前:PsychEpiphysis 日時:2014/12/09 12:42

承知しました、やってみます。
メンテ
Re: マルチスレッドDLL環境下でのコンパイル ( No.3 )
名前:PsychEpiphysis 日時:2014/12/10 16:45

DxLib::WCharToMBCharのLINK2001エラーが出ますね。 DxLibMakeフォルダ内で、txtファイルを参考に DxUseCLib.cpp DxUseCLibOgg .cpp DxUseCLibPhysics.cpp DxUseCStrmBaseFilter.cpp Windows\DxUseCLibOggD3D9.cpp Windows\DxUseCLibOggD3D11.cpp Windows\DxUseCLibOggWin.cpp を追加した.slnでやっています。 ComplieConfig.hでは頂いた書き込みの定義の コメントを外しています。
メンテ
Re: マルチスレッドDLL環境下でのコンパイル ( No.4 )
名前:管理人 日時:2014/12/14 22:31

手元の環境では件のコメントアウトを外してプロジェクトの設定を /MD(マルチスレッドDLL)にして作成した DxLib.lib と DxUseCLib.lib を使用して /MD(マルチスレッドDLL)の設定のプロジェクトをビルドすることができました こちらに DxLib.lib と DxUseCLib.lib を作成したときのプロジェクトと、作成した DxLib.lib と DxUseCLib.lib を 使用して /MD(マルチスレッドDLL)の設定のプロジェクトをビルドするテストに使用したものを纏めて圧縮したファイルを アップしましたので、よろしければご覧になってみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLib_MD_Test.exe
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存