【问题标题】:Problems linking to a lib which implementation is inside a header file链接到实现在头文件中的库时出现问题
【发布时间】:2011-11-02 20:30:10
【问题描述】:

我正在尝试编译使用 lib OpenRacm 的 C++ 源代码。该库是从here 修改后的 OpenRacm 版本,可在 Ubuntu 和 Mac OS X 的最新版本中编译,显然该库主要针对 Visual C++ 开发。

我正在尝试的源代码是here,并尝试这样编译:

g++ source.cpp -o app -I../opencram/inc/ -L../opencram/Lib/ -lOpenRACM -g

这给了error

我认为这是因为文件 mem_manager.h 没有 mem_manager.cpp,即它在头文件中实现了所有功能。问题是:有没有一种方法可以编译我的源代码,而无需在接口(头文件)和实现(CPP文件)中拆分mem_manager.h?

谢谢!

【问题讨论】:

  • opencram 路径是不是拼写错误(应该是 openracm)?
  • 是的,应该是。在我的机器上,我错误地将文件夹命名为 opencram,这是一个错字,但不是问题的根源。谢谢。
  • @tfmoraes 我和你有同样的问题。你是怎么解决的?谢谢。
  • @lads 不幸的是,我不记得我为解决这个问题做了什么。

标签: c++ compiler-errors g++


【解决方案1】:

问题的最可能原因是您没有将导入库 (.a) 提供给链接器。确保将 OpenRacm 附带的 .a 文件传递​​给链接器。

【讨论】:

  • 没有.lib 文件,只有libOpenRACM.a 包含很多.o 文件。如何生成这个 .lib 文件?谢谢!
  • 我的错误。没有发现您在 *nix 上。在 *nix 上,导入库通常是一个 .a 文件。你不会产生任何东西。您只需将 .a 文件提供给链接器即可。
猜你喜欢
  • 2017-06-21
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多