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. Spring初学之泛型依赖注入

    主要讲泛型依赖注入,所以核心在java文件,配置文件中只需配置扫描包即可,如下: <?xml version="1.0" encoding="UTF-8" ...

  2. 使用Putty和Xshell远程登录之密钥认证

    本次实验主要使用目前使用最多的Putty和Xshell工具进行实验 关于SSH密钥认证原理,请参考链接:http://www.cnblogs.com/ImJerryChan/p/6661815.htm ...

  3. sql 触发器回顾

    一: 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约束. 二: SQL Server为每个触发器 ...

  4. 直方图均衡化的 C++ 实现(基于 openCV)

    这是数字图像处理课的大作业,完成于 2013/06/17,需要调用 openCV 库,完整源码和报告如下: #include <cv.h> #include <highgui.h&g ...

  5. AppCompatActivity和Activity的区别

    1-首先是AppCompatActivity默认带标题,但Activity不带 2-而且AppCompatActivity和 requestWindowFeature(Window.FEATURE_N ...

  6. 基于vue的滚动条组件之--element隐藏组件滚动条scrollbar使用

    在项目中,总是需要用到滚动条,但windows浏览器默认的滚动条是很丑的,为了页面美观,可以考虑优化滚动条样式.  vue Element UI官方文档上并没有放出滚动条相关的示例说明,但是实际上是有 ...

  7. GEF入门实例_总结_03_显示菜单和工具栏

    一.前言 本文承接上一节: GEF入门实例_总结_02_新建初始RCP空项目 这一节,我们来给我们的插件加上菜单. 二.基础知识 1.action bar.menubar.coolbar   含义 a ...

  8. rabbitmq_学习_01_rabbitmq安装

    二.参考资料 1.RabbitMQ:windows10下安装 2.RabbitMQ系列(一):Windows下RabbitMQ安装及入门

  9. Requests 库

    Requests 库的两个重要的对象:(Request , Response) Response对象的属性: import requests r =requests.get('http://www.b ...

  10. Android Volley完全解析(三),定制自己的Request

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17612763 经过前面两篇文章的学习,我们已经掌握了Volley各种Request ...