• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

一个简单的C++调用动态库的实例

OC/C/C++ 水墨上仙 1072次浏览

一个简单的C++调用动态库的实例
转自:http://blog.csdn.net/lxh1230119/article/details/8071730

先创建一个动态库dll工程
工程中添加&nbspdlltest.cpp&nbsp&nbspdlltest.def&nbsp&nbspdlltest.h
dlltest.h

//dlltest.h  
extern __declspec(dllexport) int FuncTest();  

dlltest.cpp

//dlltest.cpp  
__declspec(dllexport) int FuncTest(int a )  
{  
    if (a = 1)  
    {  
        return 100;  
    }  
}  

dlltest.def

LIBRARY "testmydll"  
EXPORTS  
    FuncTest  
 
 

编译后生成dlltest.dll&nbsp&nbspdlltest.lib
再新建一个Win32控制台工程用来调用dlltest.dll&nbsp&nbsp
将dlltest.dll拷贝到Win32的Debug目录下面
Win32项目中dll.cpp文件如下

#include <iostream>     
#include "string"     
#include <stdio.h>    
#include <windows.h>  
using namespace std;  
  
int main()  
{  
    typedef int (*HFUNC)(int a );  
    HINSTANCE hDLL = LoadLibrary("testmydll.dll");  
    if (hDLL)  
    {  
        HFUNC hFun = (HFUNC)GetProcAddress(hDLL,"FuncTest");  
        if (hFun)  
        {  
            int a =1;  
            int b = hFun(a);  
            printf("%d\n",b);  
        }  
    }  
  
}  

&nbsp
编译执行则调用了dlltest.dll&nbsp打印出100
&nbsp
&nbsp
&nbsp
如果是调用&nbspdlltest.lib的话,就要将dlltest.lib拷贝到工程目录下(Debug上一级),编译的时候就直接链接了,另外还要把头文件&nbspdlltest.h加到工程中
Win32项目中dll.cpp中的代码如下

#include <iostream>     
#include "string"     
#include <stdio.h>    
#include <windows.h>  
#include "dlltest.h"  
using namespace std;  
#pragma comment(lib,"testmydll.lib")  
__declspec(dllimport) int FuncTest(int a );  
int main()  
{  
    int b = FuncTest(1);  
    printf("%d\n",b);  
    return 0;  
}  

编译执行打印出100


喜欢 (0)
加载中……