我正在使用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代码中的上述声明是在尝试初始化一个extern变量,但如果是这种情况请赐教。
开发人员过去通常很有帮助,但并不是很有帮助。我不确定他是否不知道问题是什么,或者他是否还没有其他客户尝试按照我的方式获得CPP组件。
如果我不得不放弃我的CPP WPTools派生组件,可能需要一个月或更长时间来修改我的所有代码,所以如果有的话,我很想找到解决方案。有谁知道解决这个问题吗?
我的印象是,如果你只是传递一个指针,就可以获得与在C ++中通过引用传递相同的结果,只要你不依赖变量并显式检查NULL值。
我正在考虑修改WPTools7代码以查看是否绕过这个通过引用的东西会解决问题,但是正如其他人为Delphi和Builder开发的时间比我长得多,我想我会问在花费太多时间之前征求意见。
由于源是在Object Pascal / Delphi中,我必须尝试弄清楚什么不是解除引用的意思。我觉得Object Pascal中的所有东西都是指针,但我并不完全确定。
无论如何,我想我是否曾经问过是否曾尝试过这样的事情?和/或是否有人对是否有助于解决我的麻烦或创造任何新问题有任何想法?
提前感谢您的帮助。