XPのOSの乗ったPCでVC ver6を使ってdllを作成しました。
作成したDLLはもとはDOS上で動かすプログラムで、
呼び出し部分と値を帰す部分をDLL用に変更しただけのものです。
dllはMFCを使わない状態で作成しました。(win32dllの雛形で)
作成した関数などは問題なく呼べています。
開発PCでは本来意図したとおりの動きをするのですが、
他PCにコピーして使用した場合には、関数そのものは呼べているものの、
意図した動きがされません。(元のDOSのEXE状態ではXPも2000も問題なし)
単にOSの問題なのか、それとも、コピー時に何かするべきことがあるのか、教えてください。
なお、MFCを使ったDLLではないため、必要はないと思いますが、ランタイムライブラリはインストールしています。
> 意図した動きがされません。
MS-DOSやWindows 3.1まではintが16bit,
それ以降のWindowsはintが32bitです。
大抵そのあたりが問題になるかと思います。
それ以上のことは,これだけの情報ではわかりません。
>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もコピー元と同一です)
以上です。
regsvr32を使うのは.OCXの場合です。
まずはデバッガ使うなり,MessageBox埋め込むなりして,
どこに問題があるかを調べるのが先ではないでしょうか?
あと,丸囲み数字はいわゆる機種依存文字です。
表示できない場合もあるので使うのはやめた方がよいでしょう。
ツイート | ![]() |