我在 Windows 7 上使用 dmd 2.054 和 optlink 8.00.12。
以下程序:
pragma(lib, "kernel32.lib");
extern(Windows) {
uint LocaleNameToLCID(const(wchar)*, int);
}
void main() {
auto us = LocaleNameToLCID("en-US", 0);
}
编译时报错:
Error 42: Symbol Undefined _LocaleNameToLCID@8
但是如果我尝试替换 kernel32.lib,我会收到很多错误:
implib /system kernel32.lib \Windows\system32\kernel32.dll
Error 42: Symbol Undefined _LocaleNameToLCID@8
c:\dmd\windows\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined _LocalFree@4
c:\dmd\windows\bin\..\lib\phobos.lib(dmain2)
(... snip ...)
查看原始 lib 和为显示创建的 implibLocalFree
显示存在差异,但我不确定这意味着什么(此输出中缺少一些特殊字符)
---------- IMPLIB
LocalFree
_LocalFreekernel32.dll LocalFree
_K32GetPerformanceInfo!_LocalFree!Z
_MoveFileExA!É_QueryPerformanceCounter!c_ReadConsoleOutputA!Ó
_LocalFreeZ
---------- DMD'S
LocalFree
_LocalFree@4KERNEL32.dll LocalFree
_LocalFree@4}
知道如何在我的程序中使用新的 kernel32.lib 来避免丢失符号吗?