首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OmniThreadLibrary C++构建器构建问题

OmniThreadLibrary C++构建器构建问题
EN

Stack Overflow用户
提问于 2016-06-12 15:07:03
回答 1查看 205关注 0票数 2

我一直试图让OmniThreadLibrary在构建器中运行,我已经用它构建好的所有c++必需文件构建了它,但是当我在c++构建器应用程序中使用它时,我得到了一堆错误消息,如下所示

bcc32错误DSiWin32.hpp(385):E2040声明被错误终止

在生成的hpp文件中的一行代码中有一个点。

静态const系统::Int8 8 CSIDL_ADMINTOOLS = System::Int8 8(0x30);

是否有人在C++构建器中使用过这种方法,或者知道解决这些问题的最佳方法?

我使用的是c++构建器结算和OmniThreadLibrary版本3.06

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-12 17:26:47

Win32 API (以及Delphi )已经声明了CSIDL_ADMINTOOLS,因此根本不应该声明它。它应该使用德尔福的Shlobj单元来代替。

Win32 API使用#define语句声明CSIDL_ADMINTOOLS

代码语言:javascript
复制
#define CSIDL_ADMINTOOLS 0x0030

因此,Omni的.hpp中的声明被C++预处理程序修改如下:

代码语言:javascript
复制
static const System::Int8 0x0030 = System::Int8(0x30);

因此,“声明终止错误”编译器错误。

当Delphi代码声明C++中已经存在的内容时,需要将其声明为{$EXTERNALSYM}{$NODECLARE},以避免重复声明,然后使用{$HPPEMIT}在生成的.hpp文件中输出相关的#include语句。德尔福的单位已经为它的Win32声明做到了这一点。

如果Omni还没有这样做(错误会表明它不是),那么就需要相应地更新它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37775739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档