我有一个从派生的类QObject和QRunnable和也有Q_OBJECT宏.包含该类的库编译正常,我得到一个.lib和.dll文件.我正在使用MSVC 2013和QT 5.4(来自qt.io的预编译二进制文件).
使用Dependency Walker查看DLL,我可以看到函数在那里.文件get的moc'ed意味着我可以查看生成的CPP文件.作为证据,这是导致麻烦的功能.
const QMetaObject DHImageConvHandler::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_DHImageConvHandler.data,
qt_meta_data_DHImageConvHandler, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试创建链接到此库的应用程序时,我收到以下错误.
unresolved external symbol "public: static struct QMetaObject const DHImageConvHandler::staticMetaObject" (?staticMetaObject@DHImageConvHandler@@2UQMetaObject@@B)
referenced in function "public: static class QString __cdecl DHImageConvHandler::tr(char const *,char const *,int)" (?tr@DHImageConvHandler@@SA?AVQString@@PBD0H@Z)
Run Code Online (Sandbox Code Playgroud)
将库的项目类型从"动态库"更改为"静态库"会使其消失,但我很好奇为什么.代码在lib中.我用文本编辑器打开导入库并查找staticMetaObject,如前所述,Dependency Walker也显示它就在那里.
任何人都可以对此有所了解吗?
编辑10.01.2015 我想知道谁在使用这个库.该lib链接到另一个lib,然后是app的一部分.
我想shutdown从命令行使用 Spring Boot 2.0.1 应用程序的端点。为此,我仅将其添加spring-boot-starter-actuator到我的 Gradle 文件中并shutdown在配置中启用了端点。
我还创建了一个非常简单的工具,尝试通过 JMX 连接到正在运行的应用程序。
片段:
String url = "service:jmx:rmi:///jndi/rmi://127.0.01:<which port?>/jmxrmi";
JMXServiceURL serviceUrl = new JMXServiceURL(url);
JMXConnectorFactory.connect(serviceUrl, null); <-- KAPOW!
Run Code Online (Sandbox Code Playgroud)
JMX 正在工作,因为我可以使用它jconsole进行本地连接。我只是不知道如何以编程方式完成它。
任何其他显式设置此处提到的端口的尝试都不起作用。有什么提示吗?
我从派生的类QObject,UploadWorker使用的Qt文档中示范运行中的线程任务的推荐方式,已启动.
QThread* thread = new QThread();
UploadWorker* worker = new UploadWorker();
worker->moveToThread(thread);
connect(thread, SIGNAL(started()), worker, SLOT(doWork()));
Run Code Online (Sandbox Code Playgroud)
现在,这完全正常.UploadWorker然后,我尝试Uploader使用相同的技术为自己创建一名工人.
以下是标题的必要部分.
class UploadWorker : public QObject
{
Q_OBJECT
public:
// stuff
public slots:
void doWork();
signals:
void allWorkDone();
protected:
void startUploader();
};
class Uploader : public QObject
{
Q_OBJECT
public:
// stuff
public slots:
void doWork();
void finishWhenQueueIsEmpty();
};
Run Code Online (Sandbox Code Playgroud)
这是执行UploadWorker.
void
UploadWorker::doWork()
{
// This method is called when QThread emits started()
// …Run Code Online (Sandbox Code Playgroud) 我有一个Spring Boot(v1.4.2)应用程序与Spring Data JPA和Hibernate(5.0.11.Final,如果我没有记错的话).我添加了jpadmodelgen-plugin为我生成元模型类,因为,你知道,我很懒.不幸的是,当我跑步时,gradle build我得到一些令人讨厌的错误.奇怪的是,做gradle test(完成应用程序的实际单元和集成测试)运行没有错误.我甚至可以在IntelliJ中运行应用程序,生活很棒.只是我的管家Jenkins无法建造它.
> gradle build
:initJpaModelgenSourcesDir
:compileJpaModelgen UP-TO-DATE
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:jar
:bootRepackage
:assemble
:compileJpaModelgenJava
Mapping_.java:3: error: cannot find symbol
import com.<snip>.model.domain.auth.Member;
^
symbol: class Member
location: package com.<snip>.model.domain.auth
Mapping_.java:7: error: package javax.persistence.metamodel does not exist
import javax.persistence.metamodel.SingularAttribute;
^
Mapping_.java:8: error: package javax.persistence.metamodel does not exist
import javax.persistence.metamodel.StaticMetamodel;
^
100 errors
:compileJpaModelgenJava FAILED
FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)
错误表明不仅找不到我自己的类,还有javax.persistence.这是build.gradle文件.
buildscript {
ext {
springBootVersion = …Run Code Online (Sandbox Code Playgroud)