Delphi OmniThreadLibrary C++;构建器构建问题
我一直试图让OnnthRead库运行在Builder中,我用它所建的所有C++所需文件构建了它,但是当我在C++ Builder应用程序中使用它时,我得到了一组错误消息,看起来像下面的 [bcc32错误]DSiWin32.hpp(385):E2040声明错误终止 其中一个指向生成的hpp文件中的这一行代码 静态常量System::Int8 CSIDL\u ADMINTOOLS=System::Int8(0x30)Delphi OmniThreadLibrary C++;构建器构建问题,delphi,c++builder,omnithreadlibrary,Delphi,C++builder,Omnithreadlibrary,我一直试图让OnnthRead库运行在Builder中,我用它所建的所有C++所需文件构建了它,但是当我在C++ Builder应用程序中使用它时,我得到了一组错误消息,看起来像下面的 [bcc32错误]DSiWin32.hpp(385):E2040声明错误终止 其中一个指向生成的hpp文件中的这一行代码 静态常量System::Int8 CSIDL\u ADMINTOOLS=System::Int8(0x30) 有没有人在C++ Builder中工作过,或者知道解决这些问题的最佳方法< /P>
有没有人在C++ Builder中工作过,或者知道解决这些问题的最佳方法< /P>
我使用C++ Builder Stand和OnnthRead Load版本3.06
Win32 API(和Delphi,就此已经声明<代码> csiLdAdMinToos),OMNI根本不应该声明它。它应该使用Delphi的
Shlobj
单元
Win32 API使用\define
语句声明CSIDL\u ADMINTOOLS
:
#define CSIDL_ADMINTOOLS 0x0030
因此,在OMNI的<代码>中,HP< <代码>的声明被C++预处理器修改为:
static const System::Int8 0x0030 = System::Int8(0x30);
因此,“声明错误终止”编译器错误
当Delphi代码声明C++中已经存在的东西时,需要声明为一个或避免重复声明,然后可选地使用一个生成的<代码> .HPP文件中输出相关的<代码> >包含< /Cord>语句。Delphi的单元已经为其Win32声明实现了这一点
如果Omni还没有这样做(错误提示它没有),那么它需要相应地更新。Hi Remy。谢谢,现在我已经通过对他们的评论让它工作起来了。看起来他们做了一些,但我想不是全部。@Shaun07776你应该向Omni作者提交一份错误报告。是的,我会的。我不认为他们每个报告都支持C++ Builder,但看起来工作正常。我提前提出了一些其他问题,然后我将把这些问题提出来。谢谢你的帮助,我已经提出了这个问题,详情请参阅链接为什么投票被否决?