C++代码的静态链接

hfh*_*hc2 5 c++ cmake static-libraries

我有以下问题:我使用以下类来初始化C库:

class Hello
{
public:
  Hello()
  {
    cout << "Hello world" << endl;
  }

  ~Hello()
  {
    cout << "Goodbye cruel world" << endl;
  }

} hello_inst;
Run Code Online (Sandbox Code Playgroud)

如果我将此代码包含在hello.cc文件中并将其与包含main()的另一个文件一起编译,则会在调用main()之前创建hello_inst并将其销毁.在这种情况下,它只打印一些行,在我的项目中,我通过LIBXML_TEST_VERSION初始化libxml.

我正在创建多个可执行文件,它们在cmake项目中共享许多相同的代码.根据这个线程:在CMake中添加多个可执行文件我创建了一个包含上面显示的代码的静态库,然后将可执行文件链接到该库.不幸的是,在这种情况下,永远不会创建hello_inst(并且永远不会初始化libxml2).我该如何解决这个问题?

tun*_*2fs 1

我遇到了类似的问题,并通过将我的库定义为静态来解决它。因此我使用了以下代码:

add_library( MyLib SHARED ${LBMLIB_SRCS} ${LBMLIB_HEADER})
Run Code Online (Sandbox Code Playgroud)

也许这可以解决你的问题