0

我正在使用 C++Builder XE6 和 XE7。我从 WPTools(基于 Pascal)组件中派生了一些 CPP 组件,但无法让它们与 WPTools7 一起使用,尽管它们在 WPTools6 和早期版本的 XE 中运行良好。

在尝试构建我的派生 CPP 组件时,Builder 似乎不喜欢它在 WPTools .HPP 文件中找到的按引用传递代码。

如下所示的行:

extern DELPHI_PACKAGE bool __fastcall WPLocateNextPrev(bool Previous, TParagraph* &active_paragraph, int &active_posinpar, bool &EOF);
extern DELPHI_PACKAGE bool __fastcall WPLocateNext(TParagraph* &active_paragraph, int &active_posinpar, bool &EOF);
extern DELPHI_PACKAGE bool __fastcall WPLocatePrev(TParagraph* &active_paragraph, int &active_posinpar, bool &BOF);``

为此我得到这样的错误:

[bcc32 Error] WPRTEDefs.hpp(6117): extern variable cannot be initialized
[bcc32 Error] WPRTEDefs.hpp(6117): Improper use of typedef 'TParagraph'
[bcc32 Error] WPRTEDefs.hpp(6117): Undefined symbol 'active_paragraph'

对我来说,.HPP 代码中的上述声明试图初始化一个外部变量对我来说并不明显,但如果是这种情况,请赐教。

过去通常很有帮助的开发人员并没有提供多大帮助。我不确定他是否不知道问题出在哪里,或者他是否没有任何其他客户尝试过像我一样获取 CPP 组件。

如果我不得不放弃我的 CPP WPTools 派生的组件,可能需要一个月或更长时间来修改我所有的代码,所以我很想找到一个解决方案,如果有的话。有谁知道解决这个问题?

我的印象是,如果你只是传递一个指针,就可以获得与在 C++ 中通过引用传递相同的结果,只要你不尊重变量并显式检查 NULL 值。

我正在考虑修改 WPTools7 代码,看看绕过这个通过引用传递的东西是否能解决问题,但是由于其他人为 Delphi 和 Builder 开发的时间比我长得多,我想我会在花钱之前征求意见很多时间。

由于源代码在 Object Pascal/Delphi 中,我将不得不尝试弄清楚不取消引用的含义。我的印象是 Object Pascal 中的所有内容本质上都是一个指针,但我并不完全确定。

无论如何,我想我会问是否有人尝试过这样的事情?和/或是否有人对它是否有助于解决我的麻烦或创造任何新问题有任何想法?

提前感谢您的帮助。

4

0 回答 0