【发布时间】:2018-06-25 20:27:07
【问题描述】:
我有一个 ATL exe 模块,我想将一些输出打印到控制台。 此模块由另一个 C# 控制台应用程序调用,因此它应该已经有一个控制台。
在 ATL 中:
extern "C" int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR , int nShowCmd)
{
printf("test"); // <- this did nothing
MessageBox(nullptr, L"test", L"caption", MB_OK); // <- this work
//...
}
【问题讨论】:
-
您声明“此模块被另一个 C# 控制台应用程序调用”,但是这似乎是一个单独的 Windows 应用程序(不是控制台应用程序),因为您有一个 _tWinMain 而不是一个主入口函数.有关详细信息,请参阅stackoverflow.com/questions/18709403/winmain-vs-main-c。您应该能够将项目类型从 Windows 更改为 Console,然后查看您的 printf 输出。
-
@holtavolt 它是单独的 COM 对象 - 因此可以将其作为 EXE 使用(假设 OP 出于某种原因需要进程隔离,或者可能在同一会话中的多个客户端之间共享相同的 COM 对象)跨度>
-
@Alexei Levenkov - 我明白了(我错过了标题中提到的 COM)并赞成你的回答。