アラート:Failed to create empty document.の対策方法


sd  2005-05-25 20:40:53  No: 57550  IP: 192.*.*.*

英語OSで起動できないのとダブりますが・・
Failed to create empty document.
のアラートを消す方法をご教授願います。
解決次第、英語OSで起動できないも解決と
させて戴きます。

編集 削除
tetrapod  2005-05-26 09:16:48  No: 57551  IP: 192.*.*.*

開発環境等がまったくかかれていませんので妄想レベルになりますが
そのメッセージは MFC が出力しているエラーと思われます。
C***DocTemplate::OpenDocumentFile 中の AFX_IDP_FAILED_TO_CREATE_DOC
を検索してみてください。

CreateNewFrame に失敗している場合にこれが表示されることがわかります。
あとはデバッグビルドで TRACE される内容を追っかけていけばよさそうです。
TRACE でもわからなければステップ実行でもなんでもしてみましょう。

編集 削除
sd  2005-05-26 12:33:58  No: 57552  IP: 192.*.*.*

ご連絡ありがとうございます。

>開発環境等がまったくかかれていませんので妄想レベルになりますが

日本語版のXPでVisualC++.NETで.EXEファイルを作り、
MFC71.dll、msvcp71.dll、msvcr71.dll を置いて
日本語版のXPで起動はできます。
しかし、システムコマンダー8で英語版のXP(同じPCで切り替えている)
でこの.EXEを起動しようとすると、
Failed to create empty document.
のアラートがでて先に進みません。
あと、この.EXEですが、基は日本語版用で、表記を英語に変えて
VisualC++.NETで保存しただけです。
日本語版のXPではこれだけの作業で、問題無く、英語表記で
起動してます。

編集 削除
tetrapod  2005-05-26 14:40:39  No: 57553  IP: 192.*.*.*

はい、ですからその英語版 XP 上でデバッグビルドした EXE を実行してください。
MFC ソースコード中に存在する TRACE() の内容が逐次表示されるはずです。
それを参考に原因を探ってください。

どーやってデバッグ実行するの?
どーやって TRACE() から原因を探るの?
とかいう質問は無しにしてください。

# 既に皆様から指摘があったとおり
# 「英語版 XP に必要な DLL の類がインストールされていないだけ」
# のような気がしまうまです。

編集 削除
sd  2005-05-26 18:08:05  No: 57554  IP: 192.*.*.*

ご連絡ありがとうございます。
ファイルは 
MFC71.dll     
msvcp71.dll 
msvcr71.dll 
ABC.exe 
ファイルが同階層に4つあるだけなので、 
リソースを英語表記に変更して保存しかできてないです。
一応プロパティではリソースは全て英語(米国)になってます。
英語版 XP に必要な DLL の類というのはどこかから
ダウンロードするのでしょうか?
すいません。レベルが低い質問で。m(__)m

編集 削除
tetrapod  2005-05-27 09:12:54  No: 57555  IP: 192.*.*.*

エー、別に私/ここはサポートセンターでもなんでもないので...
できる限りご自分で努力してみてください。
少なくとも自力で探すくらいのことはしてもらいたいものです。
ないしはご自分で直接 Microsoft に問い合わせるとか(有償ですけど)

.NET 系は使っていないのでアレですが、もしかして
英語XPのほうにはまったく何もインストールしていないのでしょうか?
MFC71.DLL をアプリケーションと同じディレクトリに置いてあるだけとか?

MFC42.DLL (VC++6のMFC) は DLL ファイルだけあっても動きませんでした。
インストール (っつーか登録) が必要でした。
MFC71.DLL もそうかもしれません。

編集 削除
tetrapod  2005-05-27 10:55:30  No: 57556  IP: 192.*.*.*

追伸
お客様が使うときと同じ条件でテストしないと意味が無いのは明らかでしょう。
お客様は英語版 XP にそのプログラムを
「インストーラでインストールして使う」のか、それとも
「手で必要なファイルをコピーして使う」のか、どちらでしょうか。
前者なら、テストの際にも「インストーラでインストールして」テストすべきです。

# いわずもがな...

編集 削除
sd  2005-05-30 11:06:10  No: 57557  IP: 192.*.*.*

ご連絡ありがとうございます。

>もしかして英語XPのほうにはまったく何もインストールしていないの
>でしょうか?

英語XPのほうには何もインストールしておりません。

>MFC71.DLL をアプリケーションと同じディレクトリに置いてあるだけとか?

MFC71.dll、msvcp71.dll、msvcr71.dllをアプリケーションと同じ
ディレクトリに置いてあるだけです。
(日本語版はこれで動きます。)

>お客様は英語版 XP にそのプログラムを
>「インストーラでインストールして使う」のか、それとも
>「手で必要なファイルをコピーして使う」のか、どちらでしょうか。

手で必要なファイルをコピーして使うだけです。

編集 削除
tetrapod  2005-05-30 11:49:50  No: 57558  IP: 192.*.*.*

>(日本語版はこれで動きます。)
既に開発環境がインストール済みのマシンでの話?
それとも XP だけクリーンインストール直後のマシンでの話?

日本語版 XP でクリーンインストール直後の状態で試したらどうなりますか?

>手で必要なファイルをコピーして使うだけです。
いまどきインストーラ無しなんだ... 俺が客なら使わんな。

編集 削除
sd  2005-05-30 12:38:44  No: 57559  IP: 192.*.*.*

>日本語版 XP でクリーンインストール直後の状態で試したら
>どうなりますか?

問題無く起動できました。

編集 削除
tetrapod  2005-05-30 14:15:34  No: 57560  IP: 192.*.*.*

http://pc8.2ch.net/test/read.cgi/tech/1116209988/161-261
だったりするわけね。

ならばあとは 261 さんの言ってるとおり、
ABC.EXE を離れて小規模なテストプログラムを組んでみるとか。

デバッグビルドしたものを英語XPで実行して TRACE の内容を見る鹿。
試してみてください。

編集 削除
sd  2005-05-30 15:17:34  No: 57561  IP: 192.*.*.*

同じ条件で別のPCで起動しましたら、英語版が無事起動しました。
前回起動に失敗した日本語版がレジストリーに影響を
与えたような気もしてきました。
一応、ABC.EXE関係のレジストリーは全部削除してやりなおしましたが、
こちらはなおもNGでした。
ちょっとよくわかりませんが・・・
機種依存と考えるにも、PCもOSも全く同じです。
ちなみに他の.EXEは問題無く立ち上がります。

編集 削除