保证C++或QT导出库函数名不改变的二种方式

本文介绍了两种确保C++或QT库中导出函数名在编译后保持不变的方法:1) 使用DEF文件明确指定导出函数名;2) 采用C语言方式编译并设定__cdecl调用约定,通过extern "C"声明导出函数,以防止C++名称修饰。这两种方式都旨在保证跨编译环境的函数调用兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 导出库使用def模块定义文件导出

使用模块定义文件,并在其中指定导出函数在编译后的DLL中的名称不会被改变.

编译前在def文件中指定什么名称,在编译后就使用该名

2.导出库使用C语言方式编译并指定使用__cdecl调用约定

使用 _declspec(dllexport) 导出函数 ,让C++编译器使用C语言方式编译C++源码,并指定调用约定为__cdecl 这样编译后的函数名不会被动.

让C++编译器使用C方式编译源码有两种方法:

     一种是通过修改后缀名为.c 这样C++编译器认为是C项目,会使用C编译器进行编译

另一种是在C++项目的.h文件中使用 extern "C"  来表示单个函数使用C方式编译

如果有多个函数要使用C方式进行编译可使用下面方式

extern "C"

{

               //这里要使用C方式编译的多个方法

}

示例:

extern "C"  __declspec(dllexport) int __cdecl add(int a,int b);

extern "C"

{

        __declspec(dllexport) int __cdecl add(int a,int b);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值