[リストへもどる]
一括表示
タイトルBCCでDLL作成-SSE確認
記事No190
投稿日: 2002/01/29(Tue) 00:22
投稿者gaia
はじめまして。
BCCでCompileをしDLLを作成しましたが、SSE対応なのか確認で
問題があります(ソースVer 3.09)
DLL開発マニュアルのtestencを使ったところ下記メッセージです。
出来上がったDLLはSSE対応になってないと判断していいのでしょうか?
D:\TMP\SAMPLE>testenc
** WARNING ** This compiler can't use SSE/SSE2!

タイトル BCCでDLL作成-SSE確認
記事No192
投稿日: 2002/01/29(Tue) 01:30
投稿者
> 出来上がったDLLはSSE対応になってないと判断していいのでしょうか?
> D:\TMP\SAMPLE>testenc
> ** WARNING ** This compiler can't use SSE/SSE2!

その WARNING が出ると言うことは SSE/SSE2 に対応してないですね.ううむ,
Ver 3.09 付属の Makefile_dll.bcc でコンパイルなさったのなら,その
WARNING は出ないはずなんですが.

ところで,DLL開発マニュアルの付属の testenc なんですが,下記の順番で
gogo.dll を探します.
1・カレントディレクトリ
2・パスが通っているディレクトリ
3・レジストリに登録してあるディレクトリ
3番目について補足すると,gogo.dll は実行すると自分がいるディレクトリを
レジストリに登録するようになっていて,testenc はカレントにもパスが通って
いるディレクトリにも gogo.dll が見つからないとそのレジストリのパスから
gogo.dll を探します.だから,以前 ver3.09 じゃない gogo.dll を実行したこ
とがある場合,Ver3.09 の gogo.dll の場所によっては Ver3.09 じゃない方の
gogo.dll が実行される可能性もあるのですが,そのへんはどうでしょうか?
・・・すいません,非常に分かりづらい説明で...

こういう場合は,testenc と同じディレクトリに Ver3.09 の gogo.dll を置い
ておけば割と確実なんでしたっけ?>PENさん


タイトル BCCでDLL作成-SSE確認
記事No194
投稿日: 2002/01/29(Tue) 02:03
投稿者gaia
> ところで,DLL開発マニュアルの付属の testenc なんですが,下記の順番で
> gogo.dll を探します.
> 1・カレントディレクトリ

確実な1番で実行してみました。
logを残しておこうと思い
D:\PROGRA~1\CD2WAV~1\PETIT\WIN>make -r -f makefile_dll.bcc > log.txt
..\engine\i386\psysse.nas:15: warning: segment attributes specified on redeclaration of segment: ignoring
..\engine\i386\clka.nas:16: warning: segment attributes specified on redeclaration of segment: ignoring
という実行結果が表示されていました。
いろいろともう少し試行してみたいと思います。

タイトル BCCでDLL作成-SSE確認
記事No196
投稿日: 2002/01/28(Mon) 15:39
投稿者
> 確実な1番で実行してみました。
ええと,1番で実行してみた結果が,
> ** WARNING ** This compiler can't use SSE/SSE2!
ということでしょうか?ううむ...だとすると困りました.

> D:\PROGRA~1\CD2WAV~1\PETIT\WIN>make -r -f makefile_dll.bcc > log.txt
> ..\engine\i386\psysse.nas:15: warning: segment attributes specified on redeclaration of segment: ignoring
> ..\engine\i386\clka.nas:16: warning: segment attributes specified on redeclaration of segment: ignoring
その warning は無害なので,無視してもらってかまいませんが,次の Ver. で
は出ないようにしておきます.ありがとうございます.


タイトル BCCでDLL作成-SSE確認
記事No197
投稿日: 2002/01/29(Tue) 23:05
投稿者さば
こんにちは。

> ええと,1番で実行してみた結果が,
> > ** WARNING ** This compiler can't use SSE/SSE2!
> ということでしょうか?ううむ...だとすると困りました.

gogo.dll の map を出力してエントリを確認したのですが、ワークエリア (RO,RW) とか SSE がらみの関数アドレスがズレちゃってるみたいです。

以下の手順でリンクし直せば、たぶんうまく行くと思います。

1. Borland C++ の lib フォルダにある c0d32.obj を、午後のソースの win フォルダにコピー。
2. コピーした c0d32.obj に対して fixu32 実行(fixu32 -u -padding16 c0d32.obj)。
3. Makefile_dll.bcc の80行目を書き換え。

$(LD) $(LDFLAGS) c0d32.obj $(AOBJS) $(COBJS), $(TARGET),, import32.lib cw32mt.lib $(LIBS), gogo_dll_bcc.def

要するに $(COBJS) と $(AOBJS) を逆にするだけです。

4. make -f Makefile_dll.bcc
(いったん gogo.dll を作っちゃった場合は、あらかじめ消しておく)

どうでしょう。
というか、うちは昔の Duron なので、確認しようがないのです……


タイトル BCCでDLL作成-SSE確認
記事No201
投稿日: 2002/02/01(Fri) 23:49
投稿者gaia
ありがとうございました。
下記解説の手順にしたがって無事SSE込みで作成が出来ました。
testencでのWaveファイル変換およびCD2WAVE32にてオプション
設定でSSEが選択可能であることの確認が行えました。
お礼が遅くなってしまい申し訳ありませんでした。

> gogo.dll の map を出力してエントリを確認したのですが、ワークエリア (RO,RW) とか SSE がらみの関数アドレスがズレちゃってるみたいです。
>
> 以下の手順でリンクし直せば、たぶんうまく行くと思います。
>
> 1. Borland C++ の lib フォルダにある c0d32.obj を、午後のソースの win フォルダにコピー。
> 2. コピーした c0d32.obj に対して fixu32 実行(fixu32 -u -padding16 c0d32.obj)。
> 3. Makefile_dll.bcc の80行目を書き換え。
>
> $(LD) $(LDFLAGS) c0d32.obj $(AOBJS) $(COBJS), $(TARGET),, import32.lib cw32mt.lib $(LIBS), gogo_dll_bcc.def
>
> 要するに $(COBJS) と $(AOBJS) を逆にするだけです。
>
> 4. make -f Makefile_dll.bcc
> (いったん gogo.dll を作っちゃった場合は、あらかじめ消しておく)
>
> どうでしょう。
> というか、うちは昔の Duron なので、確認しようがないのです……