0

私は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を使用して、シンボルの欠落を回避する方法はありますか?

4

1 に答える 1

0

どうでも..

以前も使用してみcoffimplibましたが成功しませんでしたが、今は動作します。私が以前に何をしたのか分かりません。

したがって、私の解決策は、Windows SDKをダウンロードしてcoffimplib、必要なライブラリで使用することです。

スパムでごめんなさい。誰かがなぜimplibうまくいかないのか教えてくれたら、私はその答えを受け入れます。

于 2011-07-31T12:14:03.750 に答える