学习封装
参考的资料:http://blog.csdn.net/u011221078/article/details/41308217
http://blog.sina.com.cn/s/blog_7939cf980102v052.html
一、生成DLL
VS2013——建立win32项目——DLL——完成
- //maopao.cpp
- #include "stdafx.h"
- //关键在于加入这一句,意为将C语言下的程序导出为DLL
- extern "C"_declspec(dllexport) void maopao(int *p,int count);
- void maopao(int *p,int count)
- {
- int temp=0;
- for(int i=1;i<count;i++)
- {
- for(int j=count-1;j>=i;j--)
- {
- if(p[j]>p[j-1])
- {
- temp=p[j];
- p[j]=p[j-1];
- p[j-1]=temp;
- }
- }
- }
- }
二、调用DLL
VS2013——建立win32控制台项目——完成
把第一步生成的.dll和.lib两个文件拷入控制台程序的Debug文件夹下
添加引用:
项目——属性——链接器——常规——附加库目录——添加dll
项目——属性——链接器——输入——附加依赖项——添加lib
- #include<iostream>
- #include<time.h>
- using namespace std;
- //将export改为import即导出变导入即可
- extern "C"_declspec(dllimport) void maopao(int *p,int count);
- int main()
- {
- int a[10];
- srand(time(0));
- for(int i=0;i<10;i++)
- a[i]=rand()%50;
- maopao(a,10);
- for(int i=0;i<10;i++)
- cout<<a[i]<<endl;
- getchar();//为方便调试
- return 0;
- }
注意:
cpp开始的取名方式是maopao.cpp.
第二段代码报错!!
error LNK2019: 无法解析的外部符号 __imp__CommandLineToArgvW@8,该符号在函数 _WinMain@16 中被引用
百度了一下原因:
NMAKE编译链接报错
error LNK2019: 无法解析的外部符号 __imp__CommandLineToArgvW@8,该符号在函数 _WinMain@16 中被引用
解决方式
包含shell32.lib库
#pragma comment(lib, "Shell32.lib")
所以写上#pragma comment(lib, "maopao.lib")
报错找不到lib,因为默认在当前工程目录。将maopao工程下的lib拷贝到当前工程目录,或者给出maopao.lib的完全路径。
然后报错找不到dll
吧maopao工程下的dll拷贝到当前工程目录。