【问题标题】:Adding a library in Keil as a facade to use C++ inside C project在 Keil 中添加一个库作为外观以在 C 项目中使用 C++
【发布时间】:2015-04-16 09:13:41
【问题描述】:

因为我想使用我在 C 项目中编写的一些 C++ 库,所以我在 SO 上提出的另一个问题中找到了外观模式作为解决方案。

我将包含 calculateSensors.h/cpp 和 facade.h/cpp 的项目编译为库,并将其包含到我的主项目中。它只是做一些 rand 函数并从 cpp 类返回它来测试这种方法是否有效。

现在的问题是,在包含库之后,我不确定如何包含和调用我的函数。我只是试图在主函数中包含facade.h(库和主函数在同一个文件夹中),但找不到头文件。 我究竟做错了什么? 附上屏幕截图以更好地显示我的问题。

【问题讨论】:

    标签: c++ c interop keil


    【解决方案1】:

    您必须将您的facade.h 所在的文件夹添加到您的包含路径中。

    在标签C/C++ 中的uVision 项目配置中,修改字段Include Paths 以包含所述文件夹。

    【讨论】:

    • 那么你的意思是即使我把一个项目编译成库,我仍然需要单独包含头文件?
    • 恐怕它不起作用,我收到错误:.\keilFreeRTOS.afx: Error: L6218E: Undefined symbol doObjectOrientedStuff (来自 main.o)。
    • 1.当然编译器需要知道所有符号的定义。这就是头文件的用途。因此,它还需要知道在哪里搜索包含在源代码中的头文件。 2. 未定义符号表示链接器找不到包含doObjectOrientedStuff 的二进制文件。因此,要么在编译链接的库时出现问题,要么在配置项目与库的链接时出现问题。
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多