【问题标题】:Need help getting existing .pas file in Builder C++ Builder 2009 component需要帮助在 Builder C++ Builder 2009 组件中获取现有的 .pas 文件
【发布时间】:2015-12-16 15:12:56
【问题描述】:

我正在考虑为我的应用程序获取一个面包屑“栏”(列出了我从原始数据中自己探索的文件和文件夹(因此不是通过系统调用))并遇到了这篇文章:

Is there an edit control for Delphi that allows path editing?

我注意到一篇有趣的帖子和一段代码:

http://specials.rejbrand.se/dev/controls/breadcrumb/readme.html

所以我想试驾一下。但老实说,我对组件以及如何制作它们等知之甚少,对 Delphi / Object Pascal 更是知之甚少,所以我在这里寻求指导:

How to install a component from .pas file in delphi?

我尝试使用 C++ Builder 2009 编译生成的包。

我遇到了无法修复的链接器错误:

[ILINK32 Error] Error: Unresolved external 'PathCanonicalizeW' referenced from ...

不知道你是否知道如何解决这个问题?

我必须说我不太喜欢对已安装组件的依赖,我希望能够将项目移动到具有干净编译器安装的新 PC 并构建它。但是,如果仅通过 PAS 文件就可以轻松实现这一点,那么我应该能够在移动过程中首先做到这一点。

感谢您的反馈。

【问题讨论】:

    标签: delphi c++builder delphi-2009


    【解决方案1】:

    组件必须安装到 IDE 中才能显示在设计时编辑器中。否则,只需将 .pas 文件添加到您的应用项目中,并在运行时在代码中手动实例化组件类。

    至于链接器错误,需要链接到Shlwapi.lib来解决函数引用。将 .lib 文件直接添加到您的项目中,或者至少将 #pragma comment(lib, "Shlwapi.lib") 语句添加到您的 .cpp 文件之一。您可以在$(BDS)\lib\psdk 文件夹中找到.lib 文件。

    【讨论】:

    • 谢谢。我尝试了将您的建议添加到(新)项目并添加了编译指示,并且可以编译,但是当我尝试实例化一个类时( TDirBreadcrumbBar *MyBar = new TDirBreadcrumbBar ; )我得到 [BCC32 Error] Unit1.cpp(19) : E2451 Undefined symbol 'TDirBreadcrumbBar' 这里显然没有 .h 文件要包含,那么我该如何从这里着手呢?
    • 先编译.pas文件。将生成一个 .hpp 文件。然后#include 在你的 C++ 代码中。
    • 感谢@Remy 有效,但现在我在 .hpp 文件中遇到了其他 BCC32 编译器问题 (E2109)。
    • 我改为制作组件(用于测试)并将组件添加到新项目中。编译它并最终遇到相同的错误。 (工作的).pas 文件是否可能并不总是可以在 C++ Builder 中工作?
    • 有可能。并非 Delphi 中的所有内容都具有直接的 C++ 等价物,反之亦然。在没有看到实际代码和导致错误的特定行的情况下,很难确定是什么导致了您的情况。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2014-01-01
    • 1970-01-01
    相关资源
    最近更新 更多