c 2012怎么生成标准dll

 我来答
huanglenzhi
推荐于2016-08-14 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517187
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  一:生成DLL
  1:创建DLL工程
  文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
  填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
  到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
  MyDLL.cpp内容如下:
  1 #include
2 using namespace std;
3 #include "MyDLL.h"
4
5 int Add(int &a,int &b)
6 {
7 return a+b;
  8 }
  MyDLL.h内容如下:
  1 #pragma once
  2
3 extern "C" __declspec(dllexport) int Add(int &a,int &b);
  
  
  点击生成Bulid -->Bulid MyDLL,dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了,但可以通过修改工程属性里面的general->project default->configure type修改为lib,就可以生成lib文件。
  
  注意:如果在已存在的工程上创建dll或者lib,不需要修改工程,只要把工程属性里面的general->project default->configure type修改为lib或者dll,就可以生成lib文件或者dll文件了
  在C++程序中使用刚才生成的DLL文件步骤:
  新建一个win32 控制台工程,取名testMyDLL,新建两个文件:testMyDLL.cpp和testMyDLL.h,
  首先需要 隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。新建“控制台应用程序”或“空项目”。配置如下:(这一点非常重要)
  项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件MyDLL.h所在的目录
  项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件MyDLL.lib所在的目录
项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“MyDLL.lib”(若有多个 lib 则以空格隔开)
  testMyDLL.cpp内容如下:
  #include "testMyDLL.h"
#pragma comment(lib,"..\\debug\\MyDLL.lib")//可以写成绝对路径,但是路径一定要用\\来指明,即:J:\\Pr//ograms\\C++\\Practice\\DLLTEST\\DLLtest\\Debug\\MyDLL.lib"#include
using namespace std;

int main()
{
int a =3;
int b =2;
cout<<Add(a,b)<<endl;

getchar();
}
  testMyDLL.h内容如下
  #pragma once
  
extern "C" _declspec(dllexport) int Add(int &a,int &b);
  现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)
  
  这里需要注意testMyDLL.cpp文件中调用lib的这句话:
  #pragma comment(lib,"..\\debug\\MyDLL.lib")
  这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
  注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用
  
  (1). Dependencies (推荐使用,要求有lib源代码)
  一个项目被分成多个工程来做,一个主工程exe,其他为静态库lib
  Project-->dependencies,设置主工程的依赖为其他静态库lib
  这时,主工程的Resource Files中自动添加了lib
  在主工程中需要用到其他库的位置加入库的头文件
  (2). 直接将lib添加到需要用的工程中(不太推荐,lib没能统一管理)
  提供了lib和其头文件
  选择工程-->右键-->Add Files to Project
  这时,主工程的Resource Files中自动添加了lib
  在主工程中需要用到其他库的位置加入库的头文件
  (3). 通过工程的Link设置(推荐,lib可以统一管理)
  提供了lib和其头文件
  Project-->settings-->Link,选择Categery中的Input
  在object/library modules里输入的动态链接库对应的.lib文件名
  在Additional library path中输入动态链接库对应的.lib的路径
  在主工程中需要用到其他库的位置加入库的头文件
  (4). #pragma (lib, "filename.lilb")(不太推荐,lib没能统一管理)
  提供了lib和其头文件
  在主工程中需要用到其他库的位置加入#pragma (lib, "filename.lilb")
  在主工程中需要用到其他库的位置加入库的头文件:
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式