博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015.3.2 VC++6制作非MFC dll以及VS2005、VS2010调用
阅读量:6572 次
发布时间:2019-06-24

本文共 1117 字,大约阅读时间需要 3 分钟。

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)]

转载于:https://www.cnblogs.com/mol1995/p/5964841.html

你可能感兴趣的文章
社区活动 | Apache Flink 1.9 版本即将发布,新版本有哪些新特性?
查看>>
JSCore的基本使用
查看>>
MySQL索引原理及慢查询优化,了解一下?
查看>>
Android进阶:框架打造之IOC框架
查看>>
Android:使用 Intent 连接多个活动
查看>>
git merge;fork同步集中库代码;a标签返回
查看>>
CommonLibrary——框架通用工具库
查看>>
浅谈vue —— 生命周期
查看>>
小程序开发入门教程 一
查看>>
前后端交互总结2:使用PHP进行表单数据上传与更新
查看>>
Python抖音机器人制作!让你有看不完的小姐姐
查看>>
分布式系统面试连环炮
查看>>
js中的内置对象(详细篇)
查看>>
Flutter仿美团应用开发笔记-入门篇
查看>>
你写的java代码是怎么在操作系统底层执行的?看完这篇你就知道了
查看>>
【bug】掘金md文本解析器bug
查看>>
笔记bs,信息
查看>>
《视觉开发专题》之 OpenGL 概述
查看>>
分布式缓存Redis Centos下单节点安装
查看>>
完整仿写鸿洋WanAndroid网站客户端
查看>>