1、在VC6中新建工程,选择Win32 Dynamic-Link Libary,输入dll名称如 DLL2015

2、在类型选择中,选择第2项 A Simple Dll project OK

3、随后系统会生成简单的框架,如下:

#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)

{

return TRUE;

}

4、在#include "stdafx.h"后加一行,引入函数名称:

extern "C" __declspec(dllexport) int fun(int a, int b);

5、在文件末尾添加函数主体

int fun(int a,int b)

{

return a+b;

}

6、完整的代码:

#include "stdafx.h"

extern "C" __declspec(dllexport) int fun(int a, int b);

BOOL APIENTRY DllMain( HANDLE hModule,DWORD  ul_reason_for_call, LPVOID lpReserved)

{

return TRUE;

}

int fun(int a,int b)

{

return a+b;

}

7、VS2005、VS2010中调用:

1、VS2005或VS2010须设置成x86模式(有待核实,2015.5.9证实,确实需要将主体设为X86模式)

2、将dll考入exe文件目录下(不用,可在[DllImport("DLL2015.dll")]时把完整路径添加进来)

3、如果直接用引用-浏览方式添加dll可能会出现提示dll非法,不让添加的情况

4、不用引用,直接在程序中写

[DllImport("DLL2015.dll")]

public static extern int fun(int a,int b);

5、在需要调用的地方直接写 int k=fun(5,8);即可返回结果

6、有可能会提示堆栈不对称,签名不匹配的错误。可能的原因是VS中的变量与VC中的参数类型不匹配造成。此时如果找不到合适的参数类型,引入时增加一个参数CallingConvention就能解决问题。

[DllImport("DLL2015.dll", CallingConvention = CallingConvention.Cdecl)]

2015.3.2 VC++6制作非MFC dll以及VS2005、VS2010调用的更多相关文章

  1. 2015.3.3 VC++6制作MFC dll并在其中使用对话框、引入类的操作

    上例建立的dll为非MFC的,不能使用MFC框架,如CString.对话框等类型,使用起来有一定限制.可以建立MFC的Dll来改进.建立MFC Dll的方法: 1.在VC6中新建工程时选择:MFC A ...

  2. 动态链接库编程:非MFC DLL

    设计一个DLL,内含一个函数计算a+b: DLL的组成 .h(头文件) 定义了DLL能够导出的函数.数据结构或类的声明,该文件的声明内容在.CPP文件中实现,而.CPP的源程序被封装到DLL文件中 . ...

  3. 在非MFC程序中引用CString

    CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen ...

  4. 非MFC工程中使用MFC库

    目录(?)[-] 需求说明 常见问题 问题分析 参考解决方法 我的解决方案 Stdafxh的原理   需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console A ...

  5. 在非MFC的win 32程序里面能够使用CString类

    论坛有会员用到了.,今天给大家说说CSring如何在非mfc下的调用第一:先要包含 #include "afx.h" 包含之后会报windows.h重复定义我们需要把这个头文件包含 ...

  6. VC++ 6.0 C8051F340 MFC programming note

    /************************************************************************************** * VC++ 6.0 C ...

  7. 关于visual studio 2015 智能提示英文,而非中文的解决方案

    关于visual studio 2015 智能提示英文,而非中文的解决方案:   找到这个目录 C:\Program Files (x86)\Reference Assemblies\Microsof ...

  8. 如何制作带MFC界面的MFC DLL

    最近在做基于组件化MFC界面的开发,需要把界面封装到动态库中. 一:工程创建步骤 1.创建MFC DLL工程,选择 “在共享 DLL 中使用 MFC”. 2.运行时库选择:c/c++-->代码生 ...

  9. Win32 DLL和MFC DLL 中封装对话框

    现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32   DLL和MFC   DLL两个方面来分析并解决这个问题.     ...

随机推荐

  1. Python staticmethod

    1 @staticmethod 静态方法 when this method is called, we don't pass an instance of the class to it (as we ...

  2. 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。

    转:关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题. 关于JSONObje ...

  3. v2.0 组件通信的总结

    在vue.js现在比较流行,层出不穷的js框架越来越强调数据绑定,组件化开发. 正在给公司做一个管理后台,基本思路是编写几个通用组件,采用单页面应用的形式完成: 结构大致如下: mainVue lef ...

  4. Linux下Apache的安装与配置

    本文安装的httpd版本为httpd 2.4.4安装之前确保 Development Libraries与Development tools安装上.安装方法参考:http://www.linuxidc ...

  5. django 使用多说 评论系统

    效果图 方法:登录多说网站,创建站点.然后有下面的提示 ************************************************* 复制以下代码,并粘帖到您网页代码<bo ...

  6. [STL]vector与排序算法

    vector与算法 头文件中包含大量与 vector 相关的算法,这些算法同样适用于其它容器,比如 std::list 等. 排序(Sort) 相关函数: std::sort :普通排序 defaul ...

  7. Redis源码解析(1)——源码目录介绍

    概念 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些 ...

  8. 25 python socket网络编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  9. Django中ORM增删改查

    新建模型 class Author(models.Model): nid = models.AutoField(primary_key=True) name=models.CharField( max ...

  10. 我所理解的Mongodb 的优势

    更高的写负载 默认情况下,对比事务安全,MongoDB更关注高的插入速度.如果你需要加载大量低价值的业务数据,比如日志收集,那么MongoDB将很适合你的用例,但是必须避免在要求高事务安全的情景下使用 ...