我在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 ...)
查看原始库和为LocalFree
创建的implib显示存在差异,但我不确定这意味着什么(此输出中缺少某些特殊字符)
---------- IMPLIB
LocalFree
_LocalFreekernel32.dll LocalFree
_K32GetPerformanceInfo!_LocalFree!Z
_MoveFileExA!É_QueryPerformanceCounter!c_ReadConsoleOutputA!Ó
_LocalFreeZ
---------- DMD'S
LocalFree
_LocalFree@4KERNEL32.dll LocalFree
_LocalFree@4}
知道如何在我的程序中使用新的kernel32.lib以避免丢失符号吗?
答案 0 :(得分:0)
没关系..
我之前尝试过使用coffimplib
但没有成功,但现在它可行。不知道我早些时候做过什么。
所以我的解决方案是下载windows sdk并在我需要的库上使用coffimplib
。
抱歉垃圾邮件。如果有人能告诉我为什么implib
不起作用,我会接受这个答案。