【发布时间】:2015-02-02 03:27:57
【问题描述】:
我正在尝试在 Visual C++ 中使用 QT 创建 ActiveX DLL,但在构建时出现以下错误:
Error 1 error LNK2001: unresolved external symbol DllCanUnloadNow
Error 2 error LNK2001: unresolved external symbol DllGetClassObject
Error 3 error LNK2001: unresolved external symbol DllRegisterServer
Error 4 error LNK2001: unresolved external symbol DllUnregisterServer
Error 5 error LNK2001: unresolved external symbol DumpIDL
Error 6 error LNK1120: 5 unresolved externals
我是否缺少任何库包含?
感谢您的宝贵时间。
编辑:这是标题:
#ifndef #ifndef TESTACTIVEX_H
#define #ifndef TESTACTIVEX_H
#include <QtWidgets/QWidget>
#include <ActiveQt/QAxBindable>
#include "ui_testactivex.h"
class TestActiveX : public QWidget, public QAxBindable
{
Q_OBJECT
public:
TestActiveX(QWidget *parent = 0);
private:
Ui::TestActiveXClass ui;
};
#endif // #ifndef TESTACTIVEX_H
【问题讨论】:
-
我的猜测是您的定义应该在构建 dll 时评估为
__declspec(dllexport),而在使用 dll 时应该评估为__declspec(dllimport)缺少预处理器定义以指示您正在构建 dll。 -
@drescherjm 好的,我在 Visual Studio 2013 解决方案中设置了属性来构建 DLL,我还需要做什么?我应该设置什么预处理器定义?
-
我必须查看您的 dll 标头。我猜不出你给你的定义取了什么名字..
-
我正在使用 Qt 模板(Qt Visual Studio 2013 插件的一部分)所以这里是标题 放置在 OP 中的标题,因为它不适合注释
-
@user3434662 -
Visual Studio 2013 solution to build a DLL这还不够。您必须将项目设置为构建一个ActiveX DLL,而不仅仅是一个普通的 DLL。
标签: c++ qt visual-c++