文章目录
  1. 1. Linux下编写so
  2. 2. VS创建DLL

vs创建DLL/使用

知识:

  1. Linux 动态库剖析
    https://www.ibm.com/developerworks/cn/linux/l-dynamic-libraries/index.html
  1. linux下动态链接库(.so)的显式调用和隐式调用

https://blog.csdn.net/lc_910927/article/details/42393121

  1. DLL中类的显式链接
    http://www.moon-soft.com/doc/14639.htm
  1. Windows关键字
1
BOOL APIENTRY DllMain(HANDLE hModule,DOWRD dwReason,void * lpReserved)
  • APIENTRY:表明此函数是应用程序的入口点,相当于c的main()函数
  1. visualstudio2015加载DLL

将编译好的DLL_AGM.libDLL_AGM.dll还有头文件DLL_AGM.h文件放入vs工程源码目录里,以及子目录Debug目录里;

每次更改代码都要替换.dll以及.lib文件,如修改.h文件也要替换.h文件

Linux下编写so

参考文章:

linux与windows调用动态库so dll文件

  1. add.cpp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include"add.h"

    int add(int a,int b)
    {

    int sum;
    sum=a+b;
    //std::cout<<sum<<std::endl;
    return sum;
    }
  2. add.h

    1
    2
    3
    #include<iostream>

    int add(int a,int b);
  3. 封装成.so

    1
    g++   add.cpp  -fPIC  -shared -o libADD.so

生成libADD.so

调用代码

  1. main.cpp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include"add.h"
    using namespace std;
    int main()
    {


    int sum = add(1,2);

    std::cout<<sum<<endl;

    return 0;
    }

g++链接.so

  1. 1
    g++ main.cpp -L. -lADD -Wl,-rpath,./ -o b.out

VS创建DLL

  1. 用Visualstudio新建一个工程Templates—–>Visual c++——–>Win32 Project

Overview Application Settings 选择Application type:下的DLL 勾选Empty project

通过编译会生成^&*.dll以及*&^.lib

  1. VS使用dll
  • 在工程里新建一个include文件,将编译dll工程里的.h文件放入include里面

  • 在工程目录新建一个lib文件夹,将编译dll工程生成的.lib文件放入该目录

  • 在使用dll工程中设置加载lib,

工程添加lib


2018-06-22

隐式加载

  • add_header.h

    1
    2
    3
    4
    /*      add_header.h  */
    #include<iostream>

    const int add(cosnt int a, const int b);
  • libadd_source.cpp

    1
    2
    3
    4
    5
     int add(const int a, const int b)
    {

    return a + b;
    }
    `

编译指令:

1
g++ -shared -fPIC libadd_source.cpp -o libadd.so

  • main_test.cpp

    隐式加载

1
2
3
4
5
6
7
8
9
10
#include"add_header.h"

int main()
{

using namespace std;
int a = 3;
int b = 7;
cout<<a<<"+"<<b<<"="<<add(a,b)<<endl;
return 0;
}

编译指令:

1
g++ -o a.out main_test.cpp  -L. -ladd -Wl,-rpath,./
文章目录
  1. 1. Linux下编写so
  2. 2. VS创建DLL