【发布时间】:2011-03-12 10:37:53
【问题描述】:
我已经阅读了将 dll 导入项目的代码,但我不明白为什么我们在路径前有“L”
module = LoadLibrary(L"freeglut.dll");
我如何设置像“C:/VisualStudo/Project”这样的绝对路径
我如何设置相对路径?比如“../../Project1”
谢谢
【问题讨论】:
我已经阅读了将 dll 导入项目的代码,但我不明白为什么我们在路径前有“L”
module = LoadLibrary(L"freeglut.dll");
我如何设置像“C:/VisualStudo/Project”这样的绝对路径
我如何设置相对路径?比如“../../Project1”
谢谢
【问题讨论】:
L 是字符串文字前缀,表示字符串由宽字符 (wchar_t) 组成。
在 Windows 中,您有两个版本的 LoadLibrary:LoadLibraryA (ansi) 和 LoadLibraryW (unicode),通常 #define 为您的编译选择合适的版本。如果你使用 A 版本你必须传递一个 ansi 字符串,所以不需要 L,如果你使用 LoadLiraryW 你必须传递 Unicode 字符串,所以 L 作为前缀。
【讨论】:
L 告诉编译器后面的字符串是一个宽字符串。宽字符串依赖于编译器,但在流行的 C++ 编译器中,字符串被解释为 unicode 字符串,并按此编码(编码依赖于编译器)。在 Visual C++ 的情况下,字符串编码为 UTF-16,与 Windows API 预期的字符串相匹配。
【讨论】: