我有一个C ++应用程序(df1 <- structure(list(Category = c("A", "A", "A", "B", "B", "B", "C",
"C", "C", "C", "D", "D", "D", "D", "D", "D"), Value = c(123L,
123L, 122L, 121L, 121L, 121L, 10L, 10L, 10L, 11L, 23L, 23L, 23L,
23L, 22L, 23L)), .Names = c("Category", "Value"), row.names = c(NA,
-16L), class = "data.frame")
),它链接到一个链接到静态C库B(app
)的共享C ++库A(libA
)。使用此配置,我的应用程序编译和链接就好了。
现在,如果我决定使libB
成为静态库,我会在libA
链接期间收到链接器错误。它说:&#34;错误:对app
&#34;的未定义引用。 mpfit
是mpfit
中的一项功能。如果我libB
我得到:
nm libA
libA.cpp.o:
// ... blah blah ...
U mpfit
// ... blah blah ...
是属于libA.cpp
库的文件。
我使用CMake配置构建,libA
的静态版本的配置与libA
的共享版本的配置完全相同。
知道这里发生了什么吗?为什么只是从共享库切换到静态库会导致链接器错误?