1. 创建项目
    1. 新建项目-> 选择Win32项目

    1. 输入项目名称,点击确定。在程序向导中选择下一步

    1. 选择DLL. 由于我想创建的是相对独立的DLL,所以不选择ATL和MFC. 点击完成。

     

  2. Main文件分析。

    打开dllmain.cpp文件,这是DLL的入口文件,在这个文件里,可以在进程或者线程加载此文件时进行一些自己额外的处理。

  3. 添加自己的类。
    1. 右键点击项目,选择新建->类。

    2. 点击添加按钮。

    3. 输入类名,会自动生成.h文件和.cpp文件名。点击完成按钮。

    4. 打开MyClass1.h, 在类的外面添加自己的命名空间,这样可以更好的区分不同的功能,可以使类库写的很大,并且使用的时候不易混淆。

    5. 在类定义的前面加入如下的代码:

       

      加入如下的代码后,以后在项目内方法的前面加上TESTDLL_API修饰符,就可以在引用该DLL的项目中调用这个方法。

      TESTDLL_EXPORTS这个配置是在创建DLL项目的时候由VS自动创建的,如果改了项目的名字,这个配置不会自动更改,要自己改过来。

       

    6. 在MyClass1.h中加入一个方法的声明。

    7. 打开MyClass1.cpp,加上命名空间。

    8. 为自己的方法添加定义。

    编译之后,这个DLL就可以用了。

     

  4. 创建项目使用DLL.
    1. 创建一个控制台程序。

    2. 点击下一步。

    3. 点击完成。

    4. 右击项目,在"框架和引用"中点击"添加引用"

    5. 选择DLL项目。点击确定。

    6. 点击OK.

       

    7. 添加附加目录。

      这个目录是TestDll.h所在的目录,加入这个配置后,在项目中用#include "MyClass1.h"就可以找到了。

    8. 打开控制台项目的入口文件。引入DLL项目内的头文件。

       

    9. 加入如下的代码,调用DLL的中的方法。

    10. 编译完成后,运行程序。

       

注:

  1. 这个例子中,DLL中定义的方法,输入"this is a test",返回3,这个只是个例子,具体的转换逻辑还要自己写。
  2. 如果要把编译后的DLL方法别的地方使用,需要把MyClass1.h和TestDll.lib拷贝到使用的项目的根目录下,放到别的目录下也可以,但是需要像步骤4.7那样添加.h文件所在的路径。同时需要拷贝TestDll.dll到使用的项目的Debug或者Release目录下去。
  3. 注2说的是只是调用DLL的一种方法,其他的调用方式可以参见这篇文章:

    http://www.cnblogs.com/daocaoren/archive/2012/05/30/2526495.html

     

VS2008中生成DLL项目的更多相关文章

  1. .NET在VS2008中生成DLL并调用

    1.生成DLL 打开VS2008 - >新建->项目->类库->ClassLibrary1,在ClassLibrary1中会自动创建一个Class1类 class1中加入代码如 ...

  2. 关于matlab2014a中生成dll文件,打包成com组件出现的问题和解决方法

    问题1:matlab2014a破解不完整,容易导致package打包失败 解决方法:1.下载破解文档:链接: http://pan.baidu.com/s/1eRJ4E2I 密码: 44th 2.下载 ...

  3. VS2008中调试dll

    1.运行dll实例时,会直接弹出一个小框: 选择可拉起这个dll的exe运行就可以调试了 2.以后每次都会直接运行了,要重新选择程序,弹出上面的框,需要在project-->debugging- ...

  4. 在VS2012中采用C++中调用DLL中的函数 (4)

    这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...

  5. 生成dll文件的示例

    看了好多网上写的关于dll文件生成和实用的资料发现多尔不全,都是抄来抄去,有的干脆就是搬用msdn上的原文,实在没有创意和可看的东西.于是本着学和实用的目的自己实践的东西分享给大家. 大前提:使用VS ...

  6. 【原创】在VS2012中采用C++中调用DLL中的函数(4)

    这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...

  7. 在VS2012中采用C++中调用DLL中的函数(4)

    转自:http://www.cnblogs.com/woshitianma/p/3683495.html 这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天 ...

  8. JNI中使用cl命令生成DLL文件

    问题描述:     在使用JNI调用DLL时,首先需要生成DLL文件 问题解决:     (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注:   cl. ...

  9. 如何利用.snk文件生成DLL文件中的Publickeytoken

    1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...

随机推荐

  1. [NOI2018]你的名字(SAM+线段树合并)

    考虑l=1,r=n的68分,对S和T建SAM,对T的SAM上的每个节点,计算它能给答案带来多少贡献. T上节点x代表的本质不同的子串数为mx[x]-mx[fa[x]],然后需要去掉所代表子串与S的最长 ...

  2. 洛谷 P4884 多少个1?

    题面在这里 好久没做题了2333,竟然还一次A了,神奇 大概就是等比数列然后把分母乘过去,然后直接BSGS就行了,就是要写快速乘恩... #include<bits/stdc++.h> # ...

  3. 转MySQL常见错误分析与解决方法总结

    一.Can't connect to MySQL server on 'localhost' (10061)翻译:不能连接到 localhost 上的mysql分析:这说明“localhost”计算机 ...

  4. 【BZOJ】1415: [Noi2005]聪聪和可可【期望】【最短路】【记忆化搜索】

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2335  Solved: 1373[Submit][Stat ...

  5. Codeforces Round #356 (Div. 2) B. Bear and Finding Criminal 水题

    B. Bear and Finding Criminals 题目连接: http://www.codeforces.com/contest/680/problem/B Description Ther ...

  6. POJ 1321 棋盘问题 DFS 期末前水一水就好……

    A - 棋盘问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  7. 实现多线程的另一种方式-Callable

    package com.mldn.thread; import java.util.concurrent.ExecutionException; import java.util.concurrent ...

  8. NGINX如何反向代理Tomcat并且实现Session保持

    简介 LNMT=Linux+Nginx+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下被 ...

  9. 通过maven-war-plugin插件对war包分环境打包

    针对多环节,从源头打包入手,当然这些都可以在运维阶段用脚本进行替换来代替 resources/environment/下有四个环境,local本地.dev开发.test测试.pre预上线.prod生产 ...

  10. composer安装Workerman报错:Installation failed, reverting ./composer.json to its original content.

    今天想在TP5上安装workerman,实现一个后台消息提醒功能. 第一步就卡住了,根据手册里说的首先通过composer安装 $ composer require topthink/think-wo ...