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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值