草根站长
老司机 路子野 随时超车
主要症状
1、游戏等应用程序无法正常运行;使用说明
1、下载后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 如果您不知道是X86还是X64,可以住个尝试。创建解决方案首先我们在Visual Studio 2008中创建一个名为DLLEntry的WIN32项目(Project),该项目包含在名为EntryEncapsulation的解决方案中(在Visual C++ 6.0中称为工作空间,即Workspace)。为了便于区分,我们的解决方案不想与DLLEntry同名。DLLEntry项目用于将实际入口函数(main或WinMain)封装到DLL中。如果你是VS2008老手的话,应该知道怎么创建DDL项目和静态库项目,我只是个新手。接着,我们在EntryEncapsulation解决方案中再添加一个名为LIBEntry的静态库项目,这个项目用于将实际入口函数封装到LIB中。另外,为了在完成封装后可以检验一下我们的劳动成果,还需预先创建一个用于测试DLL和LIB的空项目NewEntry。顾名思义,我们将在这个项目里编写一个名为NewEntry的函数作为形式上的入口函数。由于我建的NewEntry项目是个WIN 32窗口程序项目,所以它实际入口函数为WinMain。如果您不喜欢的话,可以另外创建一个入口函数为main的WIN 32控制台应用程序项目。好的,一切准备就绪,出发!期待激动人心的时刻到来吧!现在先来搞定LIBEntry项目。入口函数的静态库封装方法首先在LIBEntry项目中添加源文早信件LIBEntry.cpp,并在其中编写实际入口函数WinMain。要编写的代码估计你已经很熟悉了,不过为了讲解方便,我得把它再简化些。LIBEntry.cpp中的代码如下:#include "stdafx.h" // 标准头文件< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />int NewEntry(void); // 声明形式入口函数NewEntry// [--// 在实际入口函数中调用形式入口函数,并把实际入口函数封装到LIB中int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iShowCmd){ // 提示先由实际入口函数进入 MessageBox(NULL, TEXT("我是实际入口函数,我封装在LIB里,") TEXT("下面将调用形式入口函数!"), TEXT("WinMain"), MB_OK); //态岩 -- TODO: // 可以通过GetCommandLine获取命令行参数, // 并通过CommandLineToArgvW // 将其转换成argv风格的字符串数组, // 来调用int NewEntry(int argc, char * argv[]), // 是不是很像int main(int argc, char * argv[])。 // -- ENDTOD NewEntry(); // 调用形式入口函数,这个函数不在LIB里 return 0;}// WinMain// --]好了,在LIB中封装WinMain就这么简单。看到NewEntry了吧,我把它作为新的形式上的入口函数,只要在WinMain里调用它就可以了。封装之后陆闭轮,在外面就只能看到NewEntry。调用NewEntry前先做下声明,否则会提示找不到。LIBEntry项目中虽然声明了NewEntry函数,但却不存在它的函数实现,不过这照样能编译通过,因为LIB编译过程不检查函数是否实际存在,这样做是有好处的。在主程序链接时,LIB中的代码将被全部导入到EXE文件中。当程序运行时,不管是原LIB中的代码,还是链接前源文件中自带的代码,都会载入到同一个地址空间中。这样我们就可以假想,WinMain函数和NewEntry函数是被定义在同一个项目的不同源文件中的。入口函数的LIB封装方法就是根据这个原理实现的。事实上,检查函数存在性的过程被放在LIB链接阶段进行。如果在NewEntry项目中不存在NewEntry函数实现,那么项目就无法链接通过。接下来我们来完成DLLEntry项目。动态链接库封装方法首先在DLLEntry项目的DLLEntry.cpp中编写C/C++实际入口函数,在这同样还是WinMain,你可以自己再添上main。DLLEntry.cpp中的代码如下:#include "StdAfx.h" // 标准头文件int (* NewEntry)(void); // 定义形式入口函数指针NewEntry// [--// 在实际入口函数中调用形式入口函数,并把实际入口函数封装到DLL中int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iShowCmd){ // 提示先由实际入口函数进入 MessageBox(NULL, TEXT("我是实际入口函数,我被封装在DLL里,") TEXT("下面将调用形式入口函数!"), TEXT("WinMain"), MB_OK); // 获取形式入口函数指针 NewEntry = (int (*)())GetProcAddress(hInstance, "NewEntry"); if(!NewEntry){ // 提示获取形式入口函数地址出错 MessageBox(NULL, TEXT("找不到形式入口函数,即将退出程序!"), TEXT("WinMain"), MB_OK); ExitProcess(1); // 结束进程 } else { // -- TODO: // 可以通过GetCommandLine获取命令行参数, // 并通过CommandLineToArgvW // 将其转换成argv风格的字符串数组, // 来调用int NewEntry(int argc, char * argv[]), // 是不是很像int main(int argc, char * argv[])。 // -- ENDTOD
版权声明:本文标题:libanntodgk.dll下载-libanntodgk.dll文件下载内容由互联网整理发布,该文观点仅代表作者本人,转载请联系作者并注明出处:http://www.jjzxjc.com/jiaocheng/6607.html,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。