【问题标题】:Cannot import shared library with g++无法使用 g++ 导入共享库
【发布时间】:2015-03-18 18:07:55
【问题描述】:

我创建了一个共享库,将它链接到一个主程序,但是这个主程序看不到任何共享库方法,也不能导入它的头文件。 这就是我所做的:

  1. 我把库的每个cpp文件编译成位置无关的代码
g++ -c -fPIC -o objname.o objname.cpp -I"HeadersFolder"
  1. 我创建了着色器库,并且使用 我的主目录中的正确名称
g++ -shared -o libmylib.so obj1.o obj2.o etc.. etc..
  1. 我正在尝试编译一个简单的 main :
g++ main.cpp -L. -lmylib 

现在我在这个 main 中导入了一个 lib 头文件,类似于:

#include <Header.hpp>

而 g++ 告诉我没有这样的文件或目录。

【问题讨论】:

    标签: c++ linker makefile g++ shared-libraries


    【解决方案1】:

    “现在我在这个 main 中导入了一个 lib 头文件,类似于:...”

    在这种情况下,您还需要添加-I 选项来编译main.cpp

    g++ main.cpp -I"HeadersFolder" -L. -lmylib
    

    你也应该使用

    #include "Header.hpp" // Note the quotes "
    

    尖括号 (&lt;&gt;) 用于包含系统头文件(在预处理器评估它们时可能会与您自己的头文件发生冲突)。

    【讨论】:

    • 非常感谢,完美运行!我认为标题会以某种方式包含在编译库中,我认为无论如何您都不必拥有它们
    • @user3578051 如果你在#include 他们在main.cpp,你需要这个让他们可以被预处理器访问。 MSVC 编译器提供了一个#import 预处理器指令来自动解决这个问题。也许因此你的困惑来自。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多