首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

SetDllDirectory不能应用

2013-06-26 
SetDllDirectory不能使用?在VC6.0中不能使用SetDllDirectory这个API,使用老是提示没有定义,看MSDN,这个文

SetDllDirectory不能使用?
在VC6.0中不能使用SetDllDirectory这个API,使用老是提示没有定义,看MSDN,这个文件声明在头文件Header  Winbase.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll
可是使用提示SetDllDirectory没有定义?打开Winbase.h这个头文件,发现并没有SetDllDirectory这个声明,到底SetDllDirectory声明在哪个文件,可是用VC2012只要包含<windows.h>头文件即可使用?
VC6.0中发现包含<windows.h>也不能使用?真的有点莫名其妙?
[解决办法]
Client
 Requires Windows Vista or Windows XP SP1.
 
Server
 Requires Windows Server 2008 or Windows Server 2003.
 
Header
 Declared in Winbase.h; include Windows.h.
 
Library
 Use Kernel32.lib.
 
DLL
 Requires Kernel32.dll.
 
Unicode
 Implemented as SetDllDirectoryW (Unicode) and SetDllDirectoryA (ANSI).
 

[解决办法]
这个API与系统版本有很大依赖,要是加载dll的话,用LoadLibraryEx
[解决办法]

引用:
Quote: 引用:

VC6 太老了,你应该用新的IDE

这跟VC6老不老没有关系,这个API是实现在Kernel32.dll中,跟系统有关,而我使用的是win7,应该是没有问题的


这个跟安装的SDK有关
VC6自带的SDK太久,win2000之前的了
并且只支持到win2003的SDK
编译通过和运行通过是两码事

引用:
Quote: 引用:

用他做甚啊?

主要是用它来解决隐式链接DLL必须跟可执行文件同在一个目录的问题.


按照PE加载的流程,静态加载完DLL后才进入main(入口)函数
隐式链接加载DLL后,才能执行SetDllDirectory的吧
就是说SetDllDirectory对静态隐式加载DLL不起作用
只会对动态加载有影响

热点排行