[英]Delphi - Capture stdout and stderr output from statically linked MSVC++ compiled DLL
我一直在尝试从MSVC ++中编译的DLL中捕获stdout和stderr输出,这是我的Delphi应用程序静态链接到的,但到目前为止都没有成功。
procedure Test;
var
fs: TFileStream;
begin
fs := TFileStream.Create('C:\temp\output.log', fmCreate or fmShareDenyWrite);
SetStdHandle(STD_OUTPUT_HANDLE, fs.Handle);
SetStdHandle(STD_ERROR_HANDLE, fs.Handle);
dllFunc(0); // Writes to stdout in MSVC++ console app, but not here
// fs.Length is always zero
fs.Free;
end;
以为我在正确的轨道上,但它不起作用。
任何帮助,将不胜感激。
如果DLL在加载时抓取stdout句柄,那么在更改代码中的stdout句柄后,您将需要动态加载DLL。
如果你的应用程序是一个控制台应用程序,你可以运行该东西并通过重定向将所有内容捕获到stdout。 即
C:\MyAppWhichCallsDll.exe > c:\temp\output.log
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.