我认为这与我对 nlog C++ API 的使用有关(我在 nlog 论坛上的问题在这里);我在这里提出这个问题的目的是让更广泛的受众了解我的问题,也许还可以获得一些关于 VB6 IDE 未能在我的特定场景中构建的更一般的想法。
简而言之,我遇到的问题是我无法构建引用非托管 C++ 组件的 VB6 组件,这些组件调用了 nlog 的 C\C++ API(在 NLogC.DLL 中定义)。构建问题不会在编译期间发生,它们是在构建二进制文件时发生的,这向我暗示这是某种链接器类型问题?对如何生成 VB6 二进制文件知之甚少。生成了 VB6 二进制文件,但它在调用后不久就损坏并崩溃。
有没有人对VB6有过类似的经历(不一定与nlog或C++有关)?
编辑:感谢所有对这个相当晦涩的问题的回应。不幸的是,仍然没有进展;我发布后的发现:
- “调整”编译选项似乎对解决这个问题没有帮助。
- 从“空白”VB6 项目添加对启用 nlog 的 C++ 组件的引用不会使其崩溃或导致奇怪的构建问题。所以这不是“原生”VB6 问题,可能是 nlog 与其他引用组件使用的各种组件和 3rd 方库之间的交互问题?
- 至于 C++ 调用约定:启用 nlog 的 C++ 组件 - 据我所知 - 符合这些约定,并且在 VB6 引用时确实可以正常工作,只要它不进行任何 nlog API 调用。不确定 nlogc.DLL 本身是否兼容 VB6,但我认为这无关紧要,因为 API 调用是从 C++ 组件进行的;VB6 不应该知道或关心 C++ 组件所引用的内容(据我对此的理解......)
编辑2:我还应该注意构建过程中获得的错误消息是:“加载过程中的错误。有关详细信息,请参阅“xxx”。当我打开日志文件时,里面只有:“无法加载控制 xxx”。有趣的是,如果我要再次尝试构建,对该特定控件的所有引用都会从该特定项目中消失,从而导致编译错误。