我只是想试验一下这种功能(鄙人菜鸟):在VC中写一个函数,返回两个整型变量的加和。但是我编译完成以后被告知DLL调用约定错误,代码如下,根据VC下生成的 dll Project 改的,所以代码冗杂,有很多废话:// dllExample.cpp#include "stdafx.h"
#include "dllExample.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}DLLEXAMPLE_API int fnDllExample(int a, int b)
{
return a+b;
}//======================================================================================================// stdafx.h : #if !defined(AFX_STDAFX_H__5C5D2209_68C0_465F_BABB_76D997CC7CF5__INCLUDED_)
#define AFX_STDAFX_H__5C5D2209_68C0_465F_BABB_76D997CC7CF5__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#define WIN32_LEAN_AND_MEAN#include <windows.h>#endif//=============================================================================================// dllExample.h#ifdef DLLEXAMPLE_EXPORTS
#define DLLEXAMPLE_API __declspec(dllexport)
#else
#define DLLEXAMPLE_API __declspec(dllimport)
#endifDLLEXAMPLE_API int fnDllExample(int a);===============================================================================================// def fileLIBRARY dllExample
EXPORTS
fnDllExample=============================================================================================='vb source code:Option Explicit
Private Declare Function fnDllExample Lib "dllExample.dll" (ByVal a As Integer,ByVal b As Integer) As Integer
Private Sub cmdGenerate_Click()
Dim Result As Integer
Result = fnDllExample(1,2)
MsgBox Result, vbOKOnly, "Result"
End Sub
以上就是我的这一坨代码了,dll的编译没有问题,但是就是不能调用。如果那位大侠能够给一个简单的代码,或者给二三指点,小弟感激不尽。
#include "dllExample.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}DLLEXAMPLE_API int fnDllExample(int a, int b)
{
return a+b;
}//======================================================================================================// stdafx.h : #if !defined(AFX_STDAFX_H__5C5D2209_68C0_465F_BABB_76D997CC7CF5__INCLUDED_)
#define AFX_STDAFX_H__5C5D2209_68C0_465F_BABB_76D997CC7CF5__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#define WIN32_LEAN_AND_MEAN#include <windows.h>#endif//=============================================================================================// dllExample.h#ifdef DLLEXAMPLE_EXPORTS
#define DLLEXAMPLE_API __declspec(dllexport)
#else
#define DLLEXAMPLE_API __declspec(dllimport)
#endifDLLEXAMPLE_API int fnDllExample(int a);===============================================================================================// def fileLIBRARY dllExample
EXPORTS
fnDllExample=============================================================================================='vb source code:Option Explicit
Private Declare Function fnDllExample Lib "dllExample.dll" (ByVal a As Integer,ByVal b As Integer) As Integer
Private Sub cmdGenerate_Click()
Dim Result As Integer
Result = fnDllExample(1,2)
MsgBox Result, vbOKOnly, "Result"
End Sub
以上就是我的这一坨代码了,dll的编译没有问题,但是就是不能调用。如果那位大侠能够给一个简单的代码,或者给二三指点,小弟感激不尽。
解决方案 »
- VB制作自动发送邮件的程序的问题
- xp系统中fso.getfolder不支持中文问题
- 请各位高手帮我看看“一个关于控件数组的小程序”,我不知错在哪里?先谢谢!
- 求救.关于image控件的问题.简单.急
- 怎么在XP下给自已的机器上的文件夹加上密码。让别人通过局域网访问此文件夹时输入密码,而且还有不同的权限????
- 用Picture或image控件怎么改变图片的像素问题?
- *****讨论: 各位在做数据库时,都用什么方法控制每一条数据的权限?******
- HELP!在VB中设置共享目录的API谁知道?并且会用?!请指教!在线等待您的回答!!!!!!!!!!
- winsock 的sendcomplete 事件 在线等待 3q
- win98风格的MDI怎样才能才成变得像XP风格的MDI,分数不够我可以加!
- insert into语法错误
- VB两个工程怎么互相访问呢?
{
return a+b;
}
这个修改为 __stdcall 方式。VB声明将 Integer 改为 Long
#define DLLEXAMPLE_API __stdcall(dllexport)
#else
#define DLLEXAMPLE_API __stdcall(dllimport)
#endif
http://blog.csdn.net/SupermanKing/archive/2010/03/05/5347763.aspx
还有,函数声明成静态的比较好点 _stdcall