WinBase.h 里头定义的这个看不懂啊 #ifdef UNICODE
WinBase.h 里面定义的这个看不懂啊 #ifdef UNICODE
大家好 WinBase.h 里面定义:
LoadLibrary 是一个函数吗?还是变量?LoadLibrary 的定义在哪儿?
多谢啦
------解决方案--------------------
这是个函数,这里使用了宏定义,为了方便两种编码(unicode和ASCII)兼容。
在你自己写的代码中直接可以用LoadLibrary,由编译器负责使用哪个具体函数。
------解决方案--------------------
WINAPI LoadLibraryW(
__in LPCWSTR lpLibFileName
);
前面的WINAPI就是意思为windows的函数,括号里为参数,一般用于驱动调库吧。
------解决方案--------------------
LoadLibrary 一个API函数,目的是加载你的动态库
------解决方案--------------------
查看MSDN是一种有效的学习方法
大家好 WinBase.h 里面定义:
WINAPI
LoadLibraryW(
__in LPCWSTR lpLibFileName
);
#ifdef UNICODE
#define LoadLibrary LoadLibraryW
#else
#define LoadLibrary LoadLibraryA
#endif // !UNICODE
LoadLibrary 是一个函数吗?还是变量?LoadLibrary 的定义在哪儿?
多谢啦
------解决方案--------------------
这是个函数,这里使用了宏定义,为了方便两种编码(unicode和ASCII)兼容。
#ifdef UNICODE
#define LoadLibrary LoadLibraryW //如果是UNICODE编码就使用LoadLibraryW
#else
#define LoadLibrary LoadLibraryA,//如果不是UNICODE编码就使用LoadLibraryA
在你自己写的代码中直接可以用LoadLibrary,由编译器负责使用哪个具体函数。
------解决方案--------------------
WINAPI LoadLibraryW(
__in LPCWSTR lpLibFileName
);
前面的WINAPI就是意思为windows的函数,括号里为参数,一般用于驱动调库吧。
------解决方案--------------------
LoadLibrary 一个API函数,目的是加载你的动态库
------解决方案--------------------
Maps the specified executable module into the address space of the calling process.
For additional load options, use the LoadLibraryEx function.
HMODULE WINAPI LoadLibrary(
__in LPCTSTR lpFileName
);
查看MSDN是一种有效的学习方法
// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.
#include <windows.h>
#include <stdio.h>
typedef int (__cdecl *MYPROC)(LPWSTR);
VOID main(VOID)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary(TEXT("myputs"));
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
// If the function address is valid, call the function.
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) (L"Message sent to the DLL function\n");
}
// Free the DLL module.