我按照这里的说明创建了一个Qt静态库: http://qt-project.org/wiki/How_to_create_a_library_with_Qt_and_use_it_in_an_application
然后我尝试将库与我自己的(非Qt)应用程序链接,并且GCC抱怨未定义的引用。使用Linux nm
utilty检查库内容我发现我打算调用的函数在它之前和之后添加了神秘字母。
更仔细地从指令链接读取指令,它表明我需要使用import一个定义,因此可以调用正确的Qt宏来导入函数(我假设重命名函数以匹配命名方案中的图书馆)。但我真的不想在我的主应用程序中引入Qt依赖。
我真正想做的是使用Qt构建一个UI前端库,我的主应用程序将简单地链接到它而不具有任何Qt依赖性。这可能吗?或者我是否以无意的方式使用Qt?
感谢。
答案 0 :(得分:0)
听起来你正在遇到C ++名称空间错误。尝试在库导出周围添加“extern”C“{}”块。
QLibrary :: resolve函数的要点是提供一个抽象层,这样您就不必担心win32命令或用于解析符号的linux命令。没有必要使用用Qt创建的库。