0

我在编写 DLL 或 Visual Studio 方面没有太多经验。基本上我想在非VS(即Qt)项目中使用在Visual Studio中创建的DLL。默认 DLL (VS2010)的.h文件是:

// test-lib.h

#pragma once

using namespace System;

namespace testlib {

    public ref class Class1
    {
        //...
    };
}

我能够毫无问题地构建 DLL,但我不知道如何将它包含在我的 Qt 项目中。也就是说,当我尝试编译它时,我得到

..\test-lib.h:6: error: C2871: 'System': 不存在同名的命名空间 ..\test-lib.h:10: error: C2059: 语法错误: 'public' .. \test-lib.h:11:错误:C2143:语法错误:缺少';' 在'{'等之前

尽管事实上我正在使用 VS2012 的编译器进行编译,并且我的 Qt 版本也是使用它构建的。有谁知道我怎样才能使这项工作?在我的.pro文件中,我目前添加了 dll LIBS,是否需要添加其他 dll?

4

1 回答 1

1

假设您的 DLL 是用 C 语言编写的,带有符号导出等。

typedef void (*NameOfMyDLLFunction)(double* data, int size);
QLibrary* myLibrary = new QLibrary("NameOfMyLibraryFile", this);

myLibrary->load();

NameOfMyDLLFunction dllFunction = reinterpret_cast<NameOfMyDLLFunction(myLibrary->resolve("dllFunction "));

现在您可以调用您的dllFunction(double* data, int size).

于 2013-02-19T15:46:42.940 回答