私はWindows7でdmd2.054とoptlink8.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とのために作成された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を使用して、シンボルの欠落を回避する方法はありますか?