【问题标题】:Linker errors when building ActiveX DLL in Visual C++在 Visual C++ 中构建 ActiveX DLL 时出现链接器错误
【发布时间】: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++


【解决方案1】:

所以,我不确定这是否可以作为答案,但我已经能够通过使用 Qt Creator 来构建代码而不是 Visual Studio 来解决这个问题。

我希望我可以使用 Visual Studio 解决这个问题,但我可以。感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2012-01-15
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多