gpt4 book ai didi

C++ 简单条件记录

转载 作者:太空狗 更新时间:2023-10-29 21:30:36 26 4
gpt4 key购买 nike

免责声明:我不是 C++ 开发人员,我只能做基本的事情。 (我理解指针,只是我的知识太生疏了,我已经有 20 年没有接触 c/c++ 了:) )

设置:我有一个用 C#/.Net 1.1 编写的 Outlook 插件。它使用 c++ shim加载。

通常,这工作得很好,我在我的 C# 代码中使用 nlog 来进行日志记录。但有时,加载项无法加载,它。它根本没有命中托管代码,我无法从日志文件中调查问题。

所以,我需要将一些基本的日志记录 Hook 到 c++ shim 中——只需写入一个文件即可。我需要让我们的用户尽可能简单地启用它。实际上我宁愿不默认发货。

我在考虑一些东西,它将检查是否存在特定的 dll(日志记录 dll),如果存在,则使用它。否则,它不会记录任何内容。这样,当我有一个用户遇到这样的问题时,我可以只向他发送日志记录 dll,用户将把它保存在运行时目录中,我将得到该文件。

我想这必须通过某种形式的工厂解决方案来完成,它返回一个虚拟记录器,或者如果找到了 dll,则返回一个真实的记录器。

另一种选择是制作一些简单的记录器,并根据指令使用或不使用它重建 shim。这不是理想的方法,因为 shim 需要签名,我必须指示用户制作“真实”的备份拷贝,然后在完成后恢复等,而不是仅仅保存和删除 dll .

如果有任何关于如何处理它的好建议,以及如何处理此问题的链接或示例代码,我将不胜感激。

干杯

最佳答案

日志记录 dll 的接缝加载就像处理配置问题的复杂方法。为什么不使用注册表。如果您在 dll 上使用条件加载,您将使用 LoadLibraryGetProceAddress,正如您所说,您并不是真正的 C++ 编码员,所以为什么要引入复杂性。此外,还必须有 n+1 个可用的 C++ 日志库,您是否查看过其中的任何一个。


一些我在谷歌搜索后找到的

关于C++ 简单条件记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com