- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的编译器报告了对 openWallet(..)
函数的 undefined reference 。如您所见,我已链接响应库 -L/usr/lib -lkdeui -kdecore -lkparts
。
错误:
password.cpp:(.text+0x29): undefined reference to `KWallet::Wallet::openWallet(QString const&, unsigned long long, KWallet::Wallet::OpenType)'
编译命令:
g++ -Wl,-O1 -Wl,-rpath-link,/usr/lib/x86_64-linux-gnu -o password_client "ALL *.o FILES" -L/usr/lib -lkdecore -lkdeui -lkparts -lglib-2.0 -L/usr/X11R6/lib64 -L/usr/lib/x86_64-linux-gnu -lGL -lpthread
QtCreator 报了同样的错误。 .pro
文件包含
LIBS += -lkdecore \
-lkdeui \
-lkparts
我已经安装了所有需要的库。证明:
nm -D/usr/lib/libkdeui.so 的输出 | grep openWallet
是:
000000000032df70 T _ZN7KWallet6Wallet10openWalletERK7QStringmNS0_8OpenTypeE
如您所见,libkdeui.so 文件中有该函数。 ^^
我已经安装了库:
sudo apt-get install kdelibs5-dev libkparts4
有人能告诉我我做错了什么吗?哪里错了?
中南合作:
#include <QCoreApplication>
#include <KWallet/Wallet>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
using namespace KWallet;
Wallet* wallet = Wallet::openWallet(Wallet::LocalWallet(), 0);
return a.exec();
}
.pro
文件:
QT += core
TARGET = untitled
TEMPLATE = app
SOURCES += main.cpp
LIBS += -lkdeui -lkdecore -lkparts
INCLUDEPATH += /usr/include/KDE \
/usr/include/KDE/KWallet
编译:
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_DBUS_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I/usr/include/KDE -I/usr/include/KDE/KWallet -ITDIR/include/QtGui -ITDIR/include -I. -o main.o main.cpp
g++ -m64 -Wl,-O1 -o untitled main.o -L/usr/lib -L/usr/X11R6/lib64 -lkdeui -lkdecore -lkparts -L/usr/lib/x86_64-linux-gnu -lGL -lpthread
最佳答案
您的主要问题是您将 Qt 5 与 KDE Frameworks 5 混在一起。那不会像那样飞起来。自己看这个:
KDE 4 related linkage: -lkdeui -lkdecore -lkparts
Qt 5 related linkage: -lQt5Widgets -lQt5Gui -lQt5Core
修复相对简单:
LIBS += -lkdecore -lkparts -lKF5Wallet
^^^^^^^^^^^
当然,如果您转到 KF5,您还需要将包含路径更改为:
INCLUDEPATH += \
...
/usr/include/KF5 \
/usr/include/KF5/KWallet/ \
...
如果您使用 Qt 5 和 KF 5,您将需要链接到该库。基本上,您使用的是 kde 4,因为 kdeui 是一个 KDE 4 库。您可以通过发出以下命令自行检查:
dpkg -S /usr/lib/libkdeui.so
简而言之,WId
在 kdeui 库中是 unsigned long
因为这是在 X11 平台上使用的,而 Qt 5 组合可能混淆了quintptr
在 WId
中,不知何故。 Qt 4 的 WId 对于不同的平台是不同的,Qt 5 的 WId 是 quintptr
,这样就更清楚了。
如果您计划将 Qt 4 与 KDE 4 一起使用,您的初始代码是可以的,但您需要确保在这种情况下运行 Qt 4 的 qmake 而不是 Qt 5 的。这可以通过使用 qtchooser 或直接运行适当的 qmake 二进制文件来实现。 qmake --version
始终是您验证正在运行的版本的 friend 。在我的 Debian 和 Archlinux 上,相应的 qmake 二进制文件称为 qmake-qt4
。
附带说明一下,很奇怪您添加了widgets
模块,但您希望删除gui
,而前者依赖于后者。看过项目文件中使用的 widgets
模块后,我的意见更加明确,此时您可能希望同时使用 Qt 5 和 KF 5。
这是我工作的 Qt 5 和 KF 5 测试片段:
#include <QCoreApplication>
#include <KWallet>
using KWallet::Wallet;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
KWallet::Wallet* wallet = Wallet::openWallet(Wallet::LocalWallet(), 0);
return a.exec();
}
TARGET = kwallet-test
TEMPLATE = app
SOURCES += main.cpp
LIBS += -lKF5Wallet
INCLUDEPATH += /usr/include/KF5/KWallet
qmake && make
要在 Ubuntu 上运行,您需要安装以下已添加到 Utopic (14.10) 的软件包:
sudo apt-get install libkf5wallet-dev
不幸的是,Trusty Tahr (14.04) 没有提供此功能,但如果您愿意,您可以向后移植它。
关于c++ - 链接错误 : undefined reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129959/
我只是有一个更琐碎的问题。 为什么undefined == undefined 返回true,而undefined >= undefined 为false? undefined 等于 undefine
用PHP 7.2编写套接字服务器。根据Firefox 60中的“网络”选项卡,服务器的一些HTTP响应的第一行随机变为undefined undefined undefined。因此,我尝试记录套接字
在 JavaScript 中这是真的: undefined == undefined 但这是错误的: undefined <= undefined 起初我以为<=运算符包含第一个,但我猜它试图将其转换
在回答这个问题 (Difference between [Object, Object] and Array(2)) 时,我在 JavaScript 数组中遇到了一些我以前不知道的东西(具有讽刺意味的
来自https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/of , Note: thi
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
当我添加 到我的 PrimeFaces Mobile 页面,然后我在服务器日志中收到以下警告 WARNING: JSF1064: Unable to find or serve resource, u
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我正在运行 PHP 脚本并继续收到如下错误: Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php
我是一名优秀的程序员,十分优秀!