在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>也不能使用?真的有点莫名其妙?
Library Kernel32.lib
DLL Kernel32.dll
可是使用提示SetDllDirectory没有定义?打开Winbase.h这个头文件,发现并没有SetDllDirectory这个声明,到底SetDllDirectory声明在哪个文件,可是用VC2012只要包含<windows.h>头文件即可使用?
VC6.0中发现包含<windows.h>也不能使用?真的有点莫名其妙?
解决方案 »
- 为什么CTreeCtrl类用CreateEx创建WS_POPUP风格树控件debug下出现断言错误,如何解决
- 求通讯录模板
- udp大量客户端并发问题
- 语音实时播放
- 请推荐GDI编程方面的书
- 求救……!关于拼图问题!
- COM技术内幕:第8章聚合: 编译问题求助
- 关于VC++中,Document-View的问题:一个单文档中的四个类:App,Doc,View,MainFrame各有什么作用?谁能将它们的关系说清楚,请详细点!
- ps 格式的文挡怎么看
- 请教如何在VC++6.0中使用MSCOMM32.OCX控件实现二进制数据的收发!!!
- MFC Cdialog OnPaint画图问题
- 各位大大,vc6里面用mfc提取并统计access里的数据怎么做啊
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).
VC6自带的SDK太久,win2000之前的了
并且只支持到win2003的SDK
编译通过和运行通过是两码事主要是用它来解决隐式链接DLL必须跟可执行文件同在一个目录的问题.按照PE加载的流程,静态加载完DLL后才进入main(入口)函数
隐式链接加载DLL后,才能执行SetDllDirectory的吧
就是说SetDllDirectory对静态隐式加载DLL不起作用
只会对动态加载有影响
VC6自带的SDK太久,win2000之前的了
并且只支持到win2003的SDK
编译通过和运行通过是两码事主要是用它来解决隐式链接DLL必须跟可执行文件同在一个目录的问题.按照PE加载的流程,静态加载完DLL后才进入main(入口)函数
隐式链接加载DLL后,才能执行SetDllDirectory的吧
就是说SetDllDirectory对静态隐式加载DLL不起作用
只会对动态加载有影响
你说的没错,我再EXE中是动态加载DLL A,但是这个DLL A又依赖其他的隐式链接的DLL B,C...;所以DLL A, B, C...要放在跟Exe同一个目录下才能加载成功,主要我不想把这些DLL全部放在EXE目录下,这样不便于管理,我是想把这些DLL放在Exe的子目录下,所以才有这个需求,因为如果另外同一个项目发布包中别的EXE(这个项目中共有N个EXE)如果也需要这些DLL,那么就不需要再拷贝一份放在另外的EXE子目录下了.
在你源文件中重新定义一下就好了(前提是你的windows版本必须大于windows xp sp1)
define _WIN32_WINNT 0x0502