繁体   English   中英

g ++自定义动态库链接错误未定义符号

[英]g++ custom dynamic library linking error undefined symbol

好的,我现在正在寻找解决方案,持续2天。 我没有找到任何解决我的问题的方法。

目前发生了什么事? 因此,我尝试使用g ++在Linux Mint Maya 13上创建一个动态库(.so)。

foolib.h:

#pragma once
#include <stdio.h>

void foo(
    void
    );

foolib.cpp:

#include "foolib.h"

void foo(
    void
    )
{
   printf ("Hello World!\n");
};

main.cpp:

#include "foolib.h"

int main(
    int    argc,
    char** argv
    )
{
    foo ();
};

我按照以下说明编译了这些文件:

libfoo.so:

g++ -shared -o libfoo.so -fpic foolib.cpp

foo:

g++ main.cpp -o foo -L -lfoo

创建libfoo.so的工作没有任何错误,但是foo会引发未定义的引用“ foo”。 我从几个网页复制了示例代码,并尝试对其进行编译,结果始终相同。

有趣的是,我可以链接做libdl.so(-ldl),加载我的.so和我的函数。 我究竟做错了什么?

我希望我可以正确地提出我的问题。 请告诉我是否没有。 :)

您应该使用:

g++ main.cpp -o foo -L./ -lfoo

要么

g++ main.cpp -o foo libfoo.so

您声明foo编译/链接是通过g++ main.cpp -o foo -L -lfoo ,这就是问题所在。 -L选项需要一个参数,该参数为链接程序提供一个用于搜索库的附加目录,但您没有提供该目录。 因此,在您的情况下,链接器认为-lfoo是要搜索的目录的名称,而不是要链接的库的名称。

更改-L-L. 它应该工作。

有关更多信息,请参见本文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM