DXライブラリの移植 ACT.3

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みけCAT

DXライブラリの移植 ACT.3

#1

投稿記事 by みけCAT » 15年前

こんにちは、みけCATです。
私がいつも使っているDev-C++4.9.9.2で何とかDXライブラリが使えないかと思い、いろいろ調べています。
BCC用のDXライブラリのlibファイルからobjファイルの抽出に成功したのですが、
このobjファイルは「omf形式」らしく、「coff形式」への変換が必要なようです。
変換する方法を調べているのですが、なかなか見つかりません。
どうすれば変換できるか教えていただければ幸いです。

array

Re:DXライブラリの移植 ACT.3

#2

投稿記事 by array » 15年前

DXライブラリはオープソースだったと思うので、ソースコードをダウンロードして自分好みの形式に再コンパイルすることは出来ないのでしょうか?

softya

Re:DXライブラリの移植 ACT.3

#3

投稿記事 by softya » 15年前

その前にですね。調べていないんですがgccとbccで標準関数とかの呼び出し規約とか違いませんか?
http://ja.wikipedia.org/wiki/%E5%91%BC% ... F%E7%B4%84
ここも調べておいた方が良いと思います。

omf2coffは見つけられませんでした。

たかぎ

Re:DXライブラリの移植 ACT.3

#4

投稿記事 by たかぎ » 15年前

いっそのこと、まったく別のアプローチは考えられないでしょうか?
つまり...

Visual C++用のDXライブラリを使って、"C"結合のラッパー関数をエクスポートする。
MinGW側では、"C"結合のライブラリをインポートし、それをインライン関数でラッピングすることでオリジナルのインタフェースを復元する。

というやりかたです。
"C"結合でエクスポートしておけば、スクリプト言語などへのバインディングも容易にできますし、ベターCとしてつかうC++ではなく、本物のCでDXライブラリを使うこともできるようになります。

みけCAT

Re:DXライブラリの移植 ACT.3

#5

投稿記事 by みけCAT » 15年前

たかぎさん
すいません、よくわからないです。
もう少し詳しく説明できますか?

----------

VC用のライブラリをVisual Studioのlib.exe、
MinGWのar.exe、ranlib.exeを使用して.aに変換してみました。
しかし、以下のエラーが出ます。
In file included from D:\kota_documents\Documents\programs\dxlibtest2\/DxLib.h:50,
from D:\kota_documents\Documents\programs\dxlibtest2\2syou.cpp:1:
D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:5387: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:5574: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:5667: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:5736: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:5800: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:6340: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:6517: warning: `novtable' attribute directive ignored

D:\kota_documents\Documents\programs\dxlibtest2\/DxDirectX.h:6831: warning: `novtable' attribute directive ignored

C:\Users\kota\AppData\Local\Temp/ccEzbaaa.o(.text+0xe):2syou.cpp: undefined reference to `DxLib::ChangeWindowMode(int)'
C:\Users\kota\AppData\Local\Temp/ccEzbaaa.o(.text+0x13):2syou.cpp: undefined reference to `DxLib::DxLib_Init()'
C:\Users\kota\AppData\Local\Temp/ccEzbaaa.o(.text+0x26):2syou.cpp: undefined reference to `DxLib::WaitKey()'
C:\Users\kota\AppData\Local\Temp/ccEzbaaa.o(.text+0x2b):2syou.cpp: undefined reference to `DxLib::DxLib_End()'
collect2: ld returned 1 exit status

追記
コンパイルしたソースはゲームプログラミングの館2章のウィンドウモードのプログラムです。
「コンパイラを呼ぶ際、以下のコマンドを付加する」には次のコマンドを入力しました。
-L"D:\kota_documents\Downloads\DxLib_VC\プロジェクトに追加すべきファイル_VC用\dxlib2" -mwindows -lDxLib -lDxUseCLib -lDxDrawFunc 画像

たかぎ

Re:DXライブラリの移植 ACT.3

#6

投稿記事 by たかぎ » 15年前

> すいません、よくわからないです。
> もう少し詳しく説明できますか?

書いたつもりで書いていませんでしたが、DLLを作るということです。
DLLを作ってしまえば、あとは.DEFファイルからdlltoolで.aを作れるはずですよね。

みけCAT

Re:DXライブラリの移植 ACT.3

#7

投稿記事 by みけCAT » 15年前

>書いたつもりで書いていませんでしたが、DLLを作るということです。
>DLLを作ってしまえば、あとは.DEFファイルからdlltoolで.aを作れるはずですよね。

わかっていなくてすみません。
どうしたらDLLを作れますか?

たかぎ

Re:DXライブラリの移植 ACT.3

#8

投稿記事 by たかぎ » 15年前

> どうしたらDLLを作れますか?

どのレベルでわかっていないのかがわかりませんが、プロジェクトをDLLを作るように設定して、ビルドするだけでは?
もちろん、"C"結合にするためのラッパーは自分で作る必要があります。
確か、C#用のライブラリを作るためのツールだったかが公開されているはずなので、それを使えば多少は作業が楽になるのではないでしょうか?

みけCAT

Re:DXライブラリの移植 ACT.3

#9

投稿記事 by みけCAT » 15年前

とりあえず簡単な例として、
添付のファイルを使い、まずtest.cからtest.objを作り(DXライブラリを想定)
それを使ってtestdll.cでtest.dllを作ってみたいです。
DLLはできたようなのですが、使う方がうまくいきません。
DLLを使おうとしたプログラムのusetest.cも入れておきました。
test.dllの作成はBCC55、usetest.cのコンパイルはMinGWです。

閉鎖

“C言語何でも質問掲示板” へ戻る