C++ 为什么我在dll路径之前?

C++ 为什么我在dll路径之前?,c++,path,dllimport,C++,Path,Dllimport,我读过将dll导入到项目中的代码,但我不明白为什么路径前面有“L” module = LoadLibrary(L"freeglut.dll"); 如何设置绝对路径,如“C:/VisualStudo/Project” 我如何设置相对路径?比如“../../Project1” 感谢L是字符串文字前缀,表示字符串由宽字符(wchar\t)组成 在windows中,LoadLibrary有两个版本:LoadLibraryA(ansi)和LoadLibraryW(unicode),通常只有一个#定义为编

我读过将dll导入到项目中的代码,但我不明白为什么路径前面有“L”

module = LoadLibrary(L"freeglut.dll");
如何设置绝对路径,如“C:/VisualStudo/Project”

我如何设置相对路径?比如“../../Project1”


感谢

L是字符串文字前缀,表示字符串由宽字符(wchar\t)组成


在windows中,LoadLibrary有两个版本:
LoadLibraryA
(ansi)和
LoadLibraryW
(unicode),通常只有一个
#定义
为编译选择合适的版本。如果使用A版本,则必须传递ansi字符串,因此不需要L;如果使用LOADLIRARY,则必须传递Unicode格式的字符串,因此L作为前缀。

L告诉编译器以下字符串是宽字符串。一个宽的字符串是编译器依赖的,但是在流行的C++编译器中,字符串被解释为Unicode字符串,并被编码为这样(编码依赖于编译器)。在VisualC++中,字符串被编码为UTF16,它匹配Windows API所期望的字符串。

正如一个补充说明:程序肯定只编译为Unicode(否则,它们将使用了“t”(“字符串”)变体。NT为基础的OS(让我们说一切,但赢9x和千年)。本机使用Unicode函数,并具有“Ansi”(A函数)函数以实现兼容性(它们只是将字符串“加宽”并调用W版本)。链接MSDN中的一些信息以澄清说明:wchar__t不一定意味着2字节(尽管在当前的windows实现中是)。其他平台可能支持其他宽度。不,只有当您仍然以Windows 95及其相关版本为目标时,_T()宏才有用。对于新代码,它是无用的。