真的不想在看雪问这种很低级的问题,自己也在问之前百度了好长时间,也按照上面说的方法自己试过了,没有搜到c写的dll在汇编中使用的例子,大多数是在vb中或者java,c++中使用
甚是疑惑对于c++,c,vc,vc++,MFC,c的sdk,这些区别,自己耶搜到一些关于这些的
VC++是WinDOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm
MFC就是挂在VC++之上的一个辅助软件开发包
C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,c也是一样的,vc是c的sdk
Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译
Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言
看了上面的一些心里大概明白了一些
下面的是在罗的书中看到的:关于不同语言之间的dll调用问题
vc和win32汇编使用的名字修饰约定是相同的,vc中使用win32汇编写的dll函数,只要在头文件中加上_stdcall
vc写的dll只要将函数定义为stdcall的方式,就可以了
罗写的很明白,可是我没写过c中的dll,对这些名字约定甚是迷惑
写了一个简单的dll()
#include <windows.h>
_stdcall CALLBACK MySum(int a,int b);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
_stdcall CALLBACK MySum(int a,int b);
{
return a+b;
}
vc编译提示missing function header (old-style formal list?)
放弃之
继续百度,找到dll的调用分位显示和隐式调用
这是我找到的关于dll编写的http://hi.baidu.com/hxzon/blog/item/7333af0181a1e40e1c958339.html 不懂c++,放弃
继续百度,找到一篇c写的DLL供vb调用的http://blog.csdn.net/sgnaw/archive/2006/12/07/1433343.aspx
#include <windows.h>
#include "MyDLL.h"
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE ;
}
__stdcall int CALLBACK MySum(int a,int b)
{
return a+b;
}
/**//*----------------------
MyDLL.h 文件
----------------------*/
#ifdef __cplusplus
extern "C" {
#endif
__stdcall int CALLBACK MySum (int, int) ;
#ifdef __cplusplus
}
#endif
;
; MyDLL.def 文件
;
LIBRARY "MyDLL"
EXPORTS
MySum @1
成功编译出dll,感到很欣慰,但是win32是从右开始入栈,而vb好像是从左
已经持续一天了,还是没搞出来
这种对有这经验的人来说是好简单,没遇到过所以觉的很难
希望提供一个具体的例子
要隐式调用的,
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)