- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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 Borland和 Import VS dll in C Builder , 但他们没有帮助我理解问题。
最佳答案
如果您想导出foo 函数,您需要以某种方式告诉链接器。建议您使用 .def 文件,这很容易。
只需在您的项目目录中创建一个类似 exports.def 的文件,然后在其中写入如下内容:
导出
富
然后转到您的库项目设置 -> 链接器 -> 输入 -> 模块定义文件
并填写你的.def文件名
关于c++ - 用VS编译器在Qt中编译dll以便在Borland中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26525758/
回到 Borland C 编译器的基础知识。我不断收到以下消息,这让我发疯,因为我找不到分号应该放在哪里或为什么要分号 >bcc32 -v- -w -O1 oddEven.c Borland C++
我必须使用VCL形式在Delphi中编写程序。正方形,六边形和八边形的三个图形必须移至上边界,然后移至下边界,依此类推。问题是当坐标Y = 0时,当我试图将值放置在条件运算符中以停止移动时,程序冻结了
这里有一个简短的问题: 我正在尝试在 32 位 Windows 7 上使用 Embarcadero C++ Builder XE3 试验内联汇编,特别是为了开始重新自学汇编,以备将来实际应用的可能性。
我找不到与我想问的相匹配的问题。为什么我不能显示 tan (39/180*3.142)?相反,它给了我 0.0000,我需要小数。 void __fastcall TForm1::Button1Cli
随着我对 VS 2010 越来越失望,我试图找到一些替代方案,我正在寻找 Embarcadero 的新版 C++ env。 当 VS 几乎主导市场时,学习新的(我认为不流行的)产品有什么意义吗? 谢谢
我目前正在使用 Codegear RAD Studio 2007。我公司的一位客户决定他会对我们软件的本地化版本感兴趣(俄语 - 我不知道这是否重要,我们将无法使用标准的 Windows 代码页)。作
我现在正在学习,我有这个作业/任务要做: 1) 如果您按下 CTRL + L 键,所有数字符号都应该改变颜色。 2) 如果按 CTRL + S 键,您将获得光标左侧单词的长度。 我找到了这个函数 in
关于下面的C++代码, LengthAlphabeticalSort lengthAlphabeticalSort; outputList.sort(lengthAlphabeticalSort);
我正在使用 Borland c++ 3.1 编译器。我想处理异常,我编写了以下代码: void main (void) { int a = 0; int b = 1; int
我有以下代码: nErgebnisse = new unsigned int*[nInitialVecSize]; for(unsigned int i = 0; i <= nInitialVecSi
这个问题发生在我身上两次。两次都是在使用 Borland C++ 编程时。当我想运行下面的简单代码时:(完全是我写的) int n, total=0, counter=1,average; while
我正在尝试在 Borland 2010 C++ 中创建一些字典。 TDictionary__2 *d = new TDictionary__2(); 我得到错误:[BCC32 错误] Generics
如果是..那么哪个编译器最适合编译它们? 最佳答案 我的同事(不是我自己)在 386 台老式计算机上使用 Borland 编译器。 他经常遇到内存管理问题,必须非常小心地选择在 DOS 中加载哪些驱动
我不确定是否有人使用 Borland c++ 3.1,但我必须这样做。 我有一个程序可以实现简单的线程并通过定时器中断改变这些线程的上下文。 我有一个无限循环和 2 个线程,它们完成各自的工作并在彼此
void empty() { } 将被编译为 push ebp mov ebp, esp ret 如何声明函数使其没有“修饰”代码?只是简单的 ret。如果那不可能,是否可以在 .C 文件中定义完整的
class Register { private: DWORD ax,dx,cx,bx; // POH DWORD bp,sp; DWORD flag,
我支持使用 Borland C++ Builder 5.02(自 1997 年)编写的 C++ 应用程序。 Borland 字符串类上的 find() 方法的行为与我预期的不同: #include
我广泛听说 Borland C++ 5.5 编译器是免费提供的。搜索下载链接通常只会将我带到 embarcadero.com 页面,如果我能弄清楚,我该死的...... 有人知道下载 BCC 5.5
有人知道 Borland C++ rand() 函数的确切实现吗? 我尝试了以下操作,但结果与我使用真正的 TurboC 4.5 得到的结果不一样。当然,我尝试了不同变体的代码,但没有成功。 unsi
我编写了一个程序,使用串行连接与某些硬件进行通信。它以我的方式发送很多十六进制值(传感器读数),并且每隔一段时间它就会发送一个负值。前任。我收到一个十六进制值:FFFFF5D6我必须将其转换为:-26
我是一名优秀的程序员,十分优秀!