Я использую dmd 2.054 и optlink 8.00.12 в Windows 7.
Следующая программа:
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 и implib, созданный для LocalFree
, видно, что есть различия, но я не уверен, что это значит (некоторые специальные символы отсутствуют в этом выводе)
---------- IMPLIB
LocalFree
_LocalFreekernel32.dll LocalFree
_K32GetPerformanceInfo!_LocalFree!Z
_MoveFileExA!É_QueryPerformanceCounter!c_ReadConsoleOutputA!Ó
_LocalFreeZ
---------- DMD'S
LocalFree
_LocalFree@4KERNEL32.dll LocalFree
_LocalFree@4}
Есть идеи, как я могу использовать новый kernel32.lib в своих программах, чтобы избежать пропущенных символов?