2015.3.2 VC++6制作非MFC dll以及VS2005、VS2010调用
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调用的更多相关文章
- 2015.3.3 VC++6制作MFC dll并在其中使用对话框、引入类的操作
上例建立的dll为非MFC的,不能使用MFC框架,如CString.对话框等类型,使用起来有一定限制.可以建立MFC的Dll来改进.建立MFC Dll的方法: 1.在VC6中新建工程时选择:MFC A ...
- 动态链接库编程:非MFC DLL
设计一个DLL,内含一个函数计算a+b: DLL的组成 .h(头文件) 定义了DLL能够导出的函数.数据结构或类的声明,该文件的声明内容在.CPP文件中实现,而.CPP的源程序被封装到DLL文件中 . ...
- 在非MFC程序中引用CString
CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen ...
- 非MFC工程中使用MFC库
目录(?)[-] 需求说明 常见问题 问题分析 参考解决方法 我的解决方案 Stdafxh的原理 需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console A ...
- 在非MFC的win 32程序里面能够使用CString类
论坛有会员用到了.,今天给大家说说CSring如何在非mfc下的调用第一:先要包含 #include "afx.h" 包含之后会报windows.h重复定义我们需要把这个头文件包含 ...
- VC++ 6.0 C8051F340 MFC programming note
/************************************************************************************** * VC++ 6.0 C ...
- 关于visual studio 2015 智能提示英文,而非中文的解决方案
关于visual studio 2015 智能提示英文,而非中文的解决方案: 找到这个目录 C:\Program Files (x86)\Reference Assemblies\Microsof ...
- 如何制作带MFC界面的MFC DLL
最近在做基于组件化MFC界面的开发,需要把界面封装到动态库中. 一:工程创建步骤 1.创建MFC DLL工程,选择 “在共享 DLL 中使用 MFC”. 2.运行时库选择:c/c++-->代码生 ...
- Win32 DLL和MFC DLL 中封装对话框
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题. ...
随机推荐
- Mysql 利用小工具源码
#include "StdAfx.h" #include "Sql.h" #include <windows.h> #include <std ...
- css开发素材网址
1.border-collapse 为表格设置合并边框模型 2.border-spacing border-spacing 属性设置相邻单元格的边框间的距离 backface-visibility:h ...
- 新东方雅思词汇---7.2、warrant
新东方雅思词汇---7.2.warrant 一.总结 一句话总结: warr+ant 英 ['wɒr(ə)nt] 美 ['wɔrənt] n. 根据:证明:正当理由:委任状 vt. 保证:担保:批 ...
- CSS基础(float属性与清除浮动)
3.8 这是CSS里比较重要的属性:浮动,这个属性会在以后经常用到,算是一个重点吧 浮动 语法:float:left | right | none 特点: 浮动的元素不占位置,脱离了标准文档流 ...
- jQuery实现表格冻结行和列
前几天,遇到一个需求是要将表格的前几行和前几列冻结即固定,就是在有滚动条的情况下,保持那几行和那几列固定,这个需求其实是一个非常常见的需求,因为在涉及好多行和列时,在拖动滚动条时,我们需要知道每行每列 ...
- Educational Codeforces Round 33 (Rated for Div. 2)A-F
总的来说这套题还是很不错的,让我对主席树有了更深的了解 A:水题,模拟即可 #include<bits/stdc++.h> #define fi first #define se seco ...
- 如何激活Windows10系统
Win10正式企业版系统的激活方法: 按住 win+x 就会出现如下,右击桌面的左下角的“Windows”图标,从其右键菜单中选择“命令提示符(管理员)”项,以便打开 MSDOS界面. 待打开MS ...
- hzau 1203 One Stroke
1203: One Stroke Time Limit: 2 Sec Memory Limit: 1280 MBSubmit: 264 Solved: 56[Submit][Status][Web ...
- Spring使用proxool连接池 管理数据源
一.Proxool连接池简介及其配置属性概述 Proxool是一种Java数据库连接池技术.是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是这个连接池提供监控 ...
- sklearn.preprocessing.StandardScaler 离线使用 不使用pickle如何做
Having said that, you can query sklearn.preprocessing.StandardScaler for the fit parameters: scale_ ...