J'utilise dmd 2.054 et optlink 8.00.12 sous Windows 7.
Le programme suivant:
pragma(lib, "kernel32.lib");
extern(Windows) {
uint LocaleNameToLCID(const(wchar)*, int);
}
void main() {
auto us = LocaleNameToLCID("en-US", 0);
}
Donne une erreur lors de la compilation:
Error 42: Symbol Undefined _LocaleNameToLCID@8
Mais si j'essaie de remplacer kernel32.lib, j'obtiens de nombreuses erreurs:
implib /system kernel32.lib Windowssystem32kernel32.dll
Error 42: Symbol Undefined _LocaleNameToLCID@8
c:dmdwindowsbin..libphobos.lib(dmain2)
Error 42: Symbol Undefined _LocalFree@4
c:dmdwindowsbin..libphobos.lib(dmain2)
(... snip ...)
En regardant la bibliothèque d'origine et l'implib créé pour LocalFree
montre qu'il y a des différences, mais je ne sais pas ce que cela signifie (certains caractères spéciaux manquent dans cette sortie)
---------- IMPLIB
LocalFree
_LocalFreekernel32.dll LocalFree
_K32GetPerformanceInfo!_LocalFree!Z
_MoveFileExA!É_QueryPerformanceCounter!c_ReadConsoleOutputA!Ó
_LocalFreeZ
---------- DMD"S
LocalFree
_LocalFree@4KERNEL32.dll LocalFree
_LocalFree@4}
Une idée de comment utiliser le nouveau kernel32.lib dans mes programmes pour éviter de manquer des symboles?
Réponses:
0 pour la réponse № 1Ça ne fait rien..
J'avais aussi essayé d'utiliser coffimplib
auparavant sans succès, mais maintenant ça marche. Aucune idée de ce que j'ai fait plus tôt.
Ma solution a donc été de télécharger le SDK de Windows et d'utiliser coffimplib
sur les bibliothèques dont j'ai besoin.
Désolé pour le spam. Si quelqu'un pouvait me dire pourquoi implib
ne fonctionne pas, je vais accepter cette réponse.