vc下库文件的编写和调用

在网上搜索了一些关于库文件编写和调用的方法。在这里总结一下。

一 、使用vc win32 static library的编写

1. 打开Visual C++6.0编译软件,File->New;

2. 在New对话框里选择"Win32 Static Libray";

3. 填写Project name: "Writedll"; ,其中有两个选项,选择第一项,然后"OK"->"Finish"

4. 通过New来添加一个hello.h到当前的Project下,在其中写上要加入到库里的函数声明:
void helloworld( );

5. 通过New来添加一个hello.cpp到当前的Project下,加入如下代码:
#include "hello.h"       //库函数在其中声明
#include "iostream.h"

void helloworld( )                                   
{                                                   
        cout<<"hello world!"<<endl;
        return 1;                               
}                                                  


编译通过,在hello文件夹中的Debug子文件夹里生成了hello.lib库文件

6. 建立一个Win32 Console Application, 命名为he;

7. 在he中加入一个C++ Source file,命名为mainapp;

8. 在mainapp中加入一下代码:

#include "hello.h"

int main( )             
{                            
        helloworld( );
        return ;       
}                          

将hello.h和hello.lib复制到he的文件夹中,并加hello.lib加入到当前Project下(具体为在开发环境中的FileView中加入hello.lib)

附:vs2010中动态链接库的隐式调用:项目---添加引用---浏览--(选择你的DLL文件)---确定

二、win32 dynamic-link Library 的编写

在vc 6下编写和在vs2008以上版本有些区别,在new probject时,找编写选项困难。

一、

2.1在Visual C++ 里面选择Win32,新建一个Win32 Project工程,名称为mydll
2 .2在Application Settings窗口,Application type中选择 DLL; additional options中选择Empty project。点击完成
2 .3 新建mydll.cpp和mydll.h两个文件
2 .4 在mydll.h里面添加代码:
extern “C”  __declspec(dllexport) int Min(int a, int b);
2 .5 在mydll.cpp里面添加代码:
#include “mydll.h”
#include <stdio.h>
int Min(int a, int b)
{
printf(“Min is called”);

if (a >= b) return b;

else return a;
}
2 .6 生成dll

2 .7 把生成的 .lib文件拷贝到另一个工程(要调用的DLL项目)的目录下,把.dll文件拷贝到另一个工程(要调用的DLL项目)的debug目录下
2 .8 另一个项目的调用代码如下:

#pragma comment(lib,”MyDll.lib”)        //功能:编译器在link时,链接到MyDll.lib文件,也可以在projection->Setting->Link页的Object/Moduls栏填入MyDll.lib既可。

vs2010中:工程:属性-》链接-》输入-》额外依赖项直接输入库的名字就行了。但可能需要包含新的库查找路径:属性-》链接-》通用 -》额外库目录

extern “C”_declspec(dllimport) int Min(int a,int b);

#include <stdio.h>

int main()

{

int a;

a = Min(8,10);

printf(“比较的结果为%d”,a);

return 0;

}

使用 __declspec(dllimport) 从 DLL 导出:http://msdn.microsoft.com/zh-cn/library/a90k134d(v=VS.80).aspx

二、

1 在Visual C++ 里面选择Win32,新建一个Win32 Project工程,名称为mydll
2 在Application Settings窗口,Application type中选择 DLL; additional options中选择Empty project。点击完成
3 新建mydll.cpp和mydll.def两个文件

4 在mydll.def里面添加代码:
LIBRARY mydll
EXPORTS
Max @1
Min @2
5 在mydll.cpp里面添加代码:
int Max(int a, int b)
{
if(a>=b)
return a;
else
return b;
}
int Min(int a, int b)
{
if(a>=b)
return b;
else
return a;
}

6 生成dll

7 把生成的 .lib文件拷贝到另一个工程(要调用的DLL项目)的目录下,把.dll文件拷贝到另一个工程(要调用的DLL项目)的debug目录下
8 另一个项目的调用代码如下:

.h

__declspec(dllimport) int Max(int a,int b);
__declspec(dllimport) int Min(int a,int b);

.cpp

#include <stdio.h>
#include “dllcall.h”

int main()
{
int a;

a = Max(8,10);
printf(“比较的结果为%d “,a);

return 0;
}

9..然后配置工程属性

.dll所在的文件夹

使用 DEF 文件从 DLL 导出:http://msdn.microsoft.com/zh-cn/library/d91k01sh(VS.80).aspx
三、

‍隐式调用就把dll拷到项目文件夹下,把dll相应的头文件加进项目就好了;显式调用是同过LoadLibrary函数加载dll,通过 GetProcAddress得到想调用的函数的地址然后作一个牵制转换后就可以调用了。即:隐式调用(通过lib和头文件)和显式调用(只通过提供的 dll文件)。

http://www.cppblog.com/richardhe/articles/57428.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值