未定义引用'uuid_generate',即使我使用-luuid

SuV*_*eRa 5 c++ uuid

我的test.cpp

#include <uuid/uuid.h>
#include <iostream>

int main(int argc, char *argv[])
{
  uuid_t id;
  uuid_generate(id);

  char *string = new char[100];
  uuid_unparse(id, string);

  std::cout << string << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu 14

我正在运行我的test.cpp ...

g++ -luuid test.cpp
Run Code Online (Sandbox Code Playgroud)

和输出

test.cpp:(.text+0x26): undefined reference to `uuid_generate'
test.cpp:(.text+0x47): undefined reference to `uuid_unparse'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我的g ++版本:

Target: x86_64-linux-gnu
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
Run Code Online (Sandbox Code Playgroud)

我已经安装了uuid-dev.

sudo apt-get install uuid uuid-dev

uuid is already the newest version.
uuid-dev is already the newest version.
Run Code Online (Sandbox Code Playgroud)

πάν*_*ῥεῖ 5

链接库的顺序很重要,您需要-luuid在引用它的模块之后添加:

g++ test.cpp -luuid
Run Code Online (Sandbox Code Playgroud)

除非您使用分组选项 ( -Wl,--start-group, -Wl,--end-group)。

另请参阅此答案以获取更多详细信息。