J'essaye de construire une bibliothèque partagée (DLL) sur Windows, using MSVC 6 (rétro!) Et j'ai un problème de lien particulier que je dois résoudre. Ma bibliothèque partagée doit accéder à un état global, contrôlé par l'application de chargement.Comment contrôler les symboles qu'une DLL Windows importe à partir de l'application?
De façon générale, ce que j'ai est le suivant:
application.c:
static int g_private_value;
int use_private_value() {
/* do something with g_private_value */
}
int main (...) {
return shared_library_method();
}
shared_library.c:
__declspec(dllexport) int __stdcall shared_library_method() {
use_private_value();
}
(Mise à jour - J'ai oublié la partie __declspec(dllexport) int __stdcall
, mais c'est là dans le vrai code)
Comment puis-je configurer shared_library.dll afin qu'il exporte shared_library_method
et importe use_private_value
?
Veuillez noter que A) Je suis un programmeur Unix, en général, et B) que je fais cela sans Visual Studio; notre infrastructure de construction automatisée pilote MSVC avec makefiles. Si j'omets quelque chose qui facilitera la réponse à la question, veuillez commenter et je le mettrai à jour dès que possible.
J'aurais dû inclure cela; mes déclarations dans la bibliothèque partagée ont cela. Mis à jour dans le post. –