zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MySQL数据类型
    MySQL体系结构
    数据库MySQL——安装
    MySQL安装-windows安装
    vc++木马源码免杀一些常用方法
    222
    11
    metasploit(MSF)渗透平台命令大全
    Oracle数据库提权(dba权限执行系统命令)
    Python之random模块和time模块
  • 原文地址:https://www.cnblogs.com/vranger/p/3094429.html
Copyright © 2011-2022 走看看