開発マシンと実行マシン(DLL動作)


疲れた人。  2002-11-22 00:50:49  No: 50710  IP: [192.*.*.*]

XPのOSの乗ったPCでVC ver6を使ってdllを作成しました。
作成したDLLはもとはDOS上で動かすプログラムで、
呼び出し部分と値を帰す部分をDLL用に変更しただけのものです。
dllはMFCを使わない状態で作成しました。(win32dllの雛形で)
作成した関数などは問題なく呼べています。
開発PCでは本来意図したとおりの動きをするのですが、
他PCにコピーして使用した場合には、関数そのものは呼べているものの、
意図した動きがされません。(元のDOSのEXE状態ではXPも2000も問題なし)
単にOSの問題なのか、それとも、コピー時に何かするべきことがあるのか、教えてください。
なお、MFCを使ったDLLではないため、必要はないと思いますが、ランタイムライブラリはインストールしています。

編集 削除
YuO  2002-11-22 11:08:18  No: 50711  IP: [192.*.*.*]

> 意図した動きがされません。

MS-DOSやWindows 3.1まではintが16bit,
それ以降のWindowsはintが32bitです。
大抵そのあたりが問題になるかと思います。

それ以上のことは,これだけの情報ではわかりません。

編集 削除
疲れた人。  2002-11-22 11:45:38  No: 50712  IP: [192.*.*.*]

>MS-DOSやWindows 3.1まではintが16bit,
>それ以降のWindowsはintが32bitです。
は特に問題が無い筈です。

開発を行ったマシンでは問題なく、希望どおりに動いています。
その後、XPのHomeEditionにインストールしましたが、
やはり動作を行わないようです。

色々HPを見てると、DLLのregsvr32を使い登録するとの事が、
あるページで示唆されていました。
これなのか?と思い、使用してみましたが、
"dllregisterServer may not be exported . or a corrupt version of
 c:\winnt\system32\****.dll may be in memory consider using pview to
 detect and remove it"
とエラーが表示されて登録を行うこともできません。

他のPCにコピーするのは以下の通りの作業だけです。
①VCでDLLのビルド
②DLLの単純コピー(コピー先:c:\winnt\system32)
③VBで作成したDLLをテストするツールをコピー
④ツールからDLLのコピー(ツールは開発元で作りました。無論ランタイムライブラリはコピー先にインストール済みです。versionもコピー元と同一です)
以上です。

編集 削除
YuO  2002-11-22 14:46:37  No: 50713  IP: [192.*.*.*]

regsvr32を使うのは.OCXの場合です。

まずはデバッガ使うなり,MessageBox埋め込むなりして,
どこに問題があるかを調べるのが先ではないでしょうか?


あと,丸囲み数字はいわゆる機種依存文字です。
表示できない場合もあるので使うのはやめた方がよいでしょう。

編集 削除