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

  • 相关阅读:
    python-历史
    10-函数命名空间,作用域,嵌套,闭包
    centos7 搭建dns服务器
    centos7 搭建dhcp服务器
    Nginx 启用 gzip 压缩
    Eclipse 个人手册
    Nginx 命令
    定时任务
    系统设计
    根据 xsd 生成 jaxb java 类
  • 原文地址:https://www.cnblogs.com/vranger/p/3094429.html
Copyright © 2011-2022 走看看