メインスレッドでアウトプロセス COM サーバーから次のコードを実行しようとしていますが、ファイルが作成されません。
誰かがこれがなぜなのか教えてくれるのだろうか?
FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);
メインスレッドでアウトプロセス COM サーバーから次のコードを実行しようとしていますが、ファイルが作成されません。
誰かがこれがなぜなのか教えてくれるのだろうか?
FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);
アクセス許可の問題を除けば、ファイルが実際に作成されたものの、ファイルを見つけることができない可能性はかなり高いです。ファイルの完全なパス名 ( など"c:\\blah\\log.txt"
) を指定していないため、COM クライアント アプリの現在の作業ディレクトリにファイルが作成されます。COMサーバーが配置されているディレクトリと同じではないことが保証されています。
フルパスを指定する必要があります。Windows では、書き込みアクセスが保証されているディレクトリである必要があります。SHGetFolderPath() を使用して、appdata フォルダーへのパスを取得します。または、ログ用に固定のディレクトリ名を取っておきます (お勧めしません)。
最も可能性の高い原因は、fopenがアクセス拒否エラーで失敗していることだと思います。コードをステップスルーしてみましたか?これを診断する最良の方法は、デバッガーを接続してerrnoの値を調べることです。