gpt4 book ai didi

c++ - 用VS编译器在Qt中编译dll以便在Borland中使用

转载 作者:行者123 更新时间:2023-11-28 06:37:44 26 4
gpt4 key购买 nike

我有一个 C 函数包,我需要从中创建 DLL 库,以便在 C++ 程序中使用。我以前没有做过任何图书馆,所以我完全是初学者。我在 Qt Creator 工作。

我的第一个尝试是根据手册创建它 Creating shared libraries , 所以我将这两行添加到我的项目文件中:

TEMPLATE = lib
DEFINES += MYLIB_LIBRARY

然后我创建了mylib.h文件

#ifndef MYLIB_H
#define MYLIB_H

#include "mylib_global.h"
#include "functions1.h"
#include "functions2.h"
#include "functions3.h"

class MYLIBSHARED_EXPORT Mylib
{

public:
Mylib(){};
};

#endif // MYLIB_H

最后我添加了 mylib_global.h:

#ifndef MYLIB_GLOBAL_H
#define MYLIB_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(MYLIB_LIBRARY)
# define MYLIBSHARED_EXPORT Q_DECL_EXPORT
#else
# define MYLIBSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // MYLIB_GLOBAL_H

为了使函数在 C++ 中可用,我为库中的每个函数使用了这些行

#ifdef __cplusplus
extern "C"{
#endif

void foo();

#ifdef __cplusplus
}
#endif

当使用 MSVC2012 编译时,一切似乎都正常,我得到了一些 .dll 文件。但后来我将库发送给了某人,他希望在 Borland C++ 中使用它。他告诉我,我必须用一些 DEF 文件编译它 以告诉 VS 编译器正确的名称和__stdcall而不是 __cdecl 。但我不知道如何在 Qt 中做到这一点。任何解释和帮助将不胜感激。谢谢

附言我看了帖子Using VS dll in old BorlandImport VS dll in C Builder , 但他们没有帮助我理解问题。

最佳答案

如果您想导出foo 函数,您需要以某种方式告诉链接器。建议您使用 .def 文件,这很容易。

只需在您的项目目录中创建一个类似 exports.def 的文件,然后在其中写入如下内容:


导出

然后转到您的库项目设置 -> 链接器 -> 输入 -> 模块定义文件

并填写你的.def文件名

关于c++ - 用VS编译器在Qt中编译dll以便在Borland中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com