【问题标题】:Out of Process COM Server - can't create file进程外 COM 服务器 - 无法创建文件
【发布时间】:2010-07-13 15:08:34
【问题描述】:

我正在尝试在其主线程中从进程外 COM 服务器运行以下代码,但从未创建任何文件。

我想知道是否有人可以告诉我这是为什么?

FILE *f = fopen("Log.txt", "w");
fputs("Tony", f);
fputs("\n", f);
fclose(f);

【问题讨论】:

    标签: c++ file com-server


    【解决方案1】:

    除了权限问题之外,文件实际创建但您无法找到它的可能性很大。您没有提供文件的完整路径名(如 "c:\\blah\\log.txt"),这意味着它将在 COM 客户端应用程序的当前工作目录中创建。保证与您的 COM 服务器所在的目录相同。

    您需要指定完整路径。在 Windows 中,这应该是您保证可以写入的目录。使用 SHGetFolderPath() 获取 appdata 文件夹的路径。或者为日志留出一个固定的目录名(不推荐)。

    【讨论】:

      【解决方案2】:

      我认为最可能的原因是 fopen 因访问被拒绝错误而失败。您是否尝试过单步执行代码?诊断此问题的最佳方法是附加调试器并检查 errno 的值。

      【讨论】:

      • 如果它不在 proc 中,我该如何调试它?有没有简单的方法??
      • @Tony -- 使用“调试 -> 附加到进程”。选择您的服务器进程作为目标。
      猜你喜欢
      • 2014-02-18
      • 2015-05-23
      • 2013-01-20
      • 2012-09-06
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2019-09-17
      相关资源
      最近更新 更多