2013-03-04 58 views
0

我创建了一个Qt静态库的指令在这里以下使用: http://qt-project.org/wiki/How_to_create_a_library_with_Qt_and_use_it_in_an_application创建Qt库在非Qt应用程序

然后我试图去图书馆用我自己的(非QT)应用程序链接, GCC抱怨未定义的参考文献。使用Linux nm实用程序检查库内容我发现我打算调用的函数在它之前和之后添加了神秘字母。

从指令链接读取指令更紧密,它表明我需要使用使用导入定义,因此可以调用正确的Qt宏来导入函数(我假设重命名函数以匹配命名方案图书馆)。但我并不想在我的主应用程序中引入Qt依赖。

我真正想要做的就是用Qt构建一个UI前端库,而我的主应用程序将直接链接到它,而没有任何Qt依赖。这可能吗?还是我以一种无意的方式使用Qt?

谢谢。

回答

0

这听起来像你正在运行到C++命名空间mangling。尝试添加一个'extern“C”{}'块在你的库导出。

QLibrary :: resolve函数的要点是提供一个抽象层,因此您不必担心解析符号的win32命令或linux命令。不需要使用用Qt创建的库。

+0

谢谢,那就是问题所在。你是否有推荐的混用C/C++或C++ for C程序员的阅读材料?我来自C背景,并不熟悉C++。 – Ricky 2013-03-04 08:23:06

+0

嗯。我会说试着学习标准,或者至少是你正在使用的部分,并看看示例代码。 http://cplusplus.com/和MDSN是非常好的文档。 – 2013-03-04 12:58:47