C++ 与g++;
通过JVMTI,我正在开发一个代理来评测Java应用程序。因此,将编译一个共享库libagent.so。此外,我使用Qt框架: 目前,它仅由以下两个源文件组成: 及 但是,当使用我的共享库libagent.so启动Java应用程序时,我得到错误:未定义符号:_ZTV11AgentServer(./libagent.so) 当我运行ldd时,我遇到了相同的依赖性问题:C++ 与g++;,c++,qt,g++,jvmti,moc,C++,Qt,G++,Jvmti,Moc,通过JVMTI,我正在开发一个代理来评测Java应用程序。因此,将编译一个共享库libagent.so。此外,我使用Qt框架: 目前,它仅由以下两个源文件组成: 及 但是,当使用我的共享库libagent.so启动Java应用程序时,我得到错误:未定义符号:_ZTV11AgentServer(./libagent.so) 当我运行ldd时,我遇到了相同的依赖性问题: ldd -d libagent.so linux-vdso.so.1 => (0x00007fffeb333000) l
ldd -d libagent.so
linux-vdso.so.1 => (0x00007fffeb333000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8b6731b000)
libm.so.6 => /lib/libm.so.6 (0x00007f8b67098000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f8b66e81000)
libc.so.6 => /lib/libc.so.6 (0x00007f8b66afe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8b67844000)
undefined symbol: _ZTV11AgentServer (./libagent.so)
我当前的编译命令是:
g++ $(CXXFLAGS) -fPIC -shared -o libagent.so $(INCPATH) ../src/agent.cpp ../src/agentserver.cpp
其中$(cxflags)是-m64-pipe-O2-Wall-W-D_可重入$(定义)
其中,$(定义)是-DQT\u NO\u DEBUG-DQT\u GUI\u LIB-DQT\u NETWORK\u LIB-DQT\u CORE\u LIB-DQT\u SHARED
其中$(INCPATH)is-I/home/konrad/qtsdk-2010.05/qt/mkspecs/linux-g++-64-I../src-I/home/konrad/qtsdk-2010.05/qt/include/QtCore-I/home/konrad/qtsdk-2010.05/qt/QtNetwork-I/home/konrad/qtsdk-2010.05/QtGui-I/qt/include-I/usr/lib/java-6-openjdk/include-I/usr/lib/java-6-jvm/jvm/open-6-include-linux-src-一,
我花了一些时间研究这个问题,但没有人解决这个错误
这是agentserver.cpp的头代码:错误消息告诉您agentserver vtable中的某些元素未定义。使用
Q_对象
需要在源代码上运行moc
,并链接到qt库 错误消息告诉您AgentServer的vtable中的某些元素未定义。使用Q_对象
需要在源代码上运行moc
,并链接到qt库 我只在头文件中声明了构造函数,并实现了它,如agentserver.cpp:6的源代码所示-9@platzhirsch:张贴标题files@Erik:好的,链接附在我的原件中post@platzhirsch:你需要跑步moc@Erik:当我使用Qt IDE(qmake)时,moc文件仍然会生成。我可以轻松地添加所需的moc…cpp文件,但如何链接到Qt库?我只在头文件中声明了构造函数,并实现了它,如agentserver.cpp:6的源代码所示-9@platzhirsch:张贴标题files@Erik:好的,链接附在我的原件中post@platzhirsch:你需要跑步moc@Erik:当我使用Qt IDE(qmake)时,moc文件仍然会生成。我可以轻松添加所需的moc…cpp文件,但如何链接到Qt库?