vc++, DLL 中定义 重载函数

最近做了一些VC++动态链接库的封装,碰到一个问题,在 non-mfc dll模式下,如何实现函数重载,网上查找了一些资料,比较少,经过一番的摸索,终于实现了,分享如下:

1.问题:

要实现

swap(int a,int b);

swap(float a,float b);

两个函数的重载。

2.错误的解决方法:

常规的定义头文件方法如下:

/*testDll.h*/

#ifndef DLL_TESTDLL_H

#define DLL_TESTDLL_H

    extern "C"  _declspec(dllexport) swap(int a,int b);

    extern "C"  _declspec(dllexport) swap(float a,float b);

#endif

但是这个编译会报错,因为 extern "C" 修饰的函数,要求标函数按照C语言方式编译和连接,而c语言中,不能实现函数的重载。

3. 正确的解决办法

这时只需将 extern "C" 去掉,是函数以C++方式编译和 连接即可。

/*testDll.h*/

#ifndef DLL_TESTDLL_H

#define DLL_TESTDLL_H

    _declspec(dllexport) swap(int a,int b);

    _declspec(dllexport) swap(float a,float b);

#endif

原文地址:https://www.cnblogs.com/vranger/p/3094429.html