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

  • 相关阅读:
    mysql5.6 TIME,DATETIME,TIMESTAMP
    CMake 简单介绍 图
    mysql 源码编绎修改 FLAGS,调试MYSQL
    CHAR 详解
    关于MySQL的各种总结
    Shell编程速查手册
    cmake 手册系列
    编译安装GCC 5.2.0
    宽字符相关的输入输出
    Makefile
  • 原文地址:https://www.cnblogs.com/vranger/p/3094429.html
Copyright © 2011-2022 走看看