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

455 阅读1分钟
如下内容是关于一个简单的C++调用动态库的实例的内容,希望对码农有些用。 

extern __declspec(dllexport) int FuncTest();  


                                
                        
                                
dlltest.cpp
                                
                        
                                

__declspec(dllexport) int FuncTest(int a )  
{  
    if (a = 1)  
    {  
        return 100;  
    }  
}  

                                
                        
                                
dlltest.def
                                
                        
                                


LIBRARY "testmydll"  
EXPORTS  
    FuncTest  
 
 

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


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


                                
                        
                                
编译执行则调用了dlltest.dll打印出100如果是调用dlltest.lib的话,就要将dlltest.lib拷贝到工程目录下(Debug上一级),编译的时候就直接链接了,另外还要把头文件dlltest.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("%dn",b);  
    return 0;  
}  


                                
                        
                                
编译执行打印出100