Powinienem dodać: W każdym razie nie powinieneś umieszczać swojej biblioteki DLL w \ system32 \! Zmodyfikuj kod, zmodyfikuj instalator ... znajdź dom dla swoich bitów, który NIE jest nigdzie pod c: \ windows \
Na przykład instalator umieszcza pliki DLL w:
\program files\<your app dir>\
or
\program files\common files\<your app name>\
( Uwaga : Sposób, w jaki to robisz, to użycie środowiska var:% ProgramFiles% lub% ProgramFiles (x86)% w celu znalezienia plików programu .... nie zakładasz, że to c: \ program files \ .. ..)
a następnie ustawia znacznik rejestru:
HKLM\software\<your app name>
-- dllLocation
Kod korzystający z bibliotek DLL odczytuje rejestr, a następnie dynamicznie łączy się z bibliotekami DLL w tej lokalizacji.
Powyżej jest mądry sposób.
Nigdy nie instalujesz swoich bibliotek DLL ani bibliotek DLL stron trzecich w \ system32 \ lub \ syswow64. Jeśli musisz się ładować statycznie, umieścisz swoje biblioteki DLL w swoim katalogu exe (tam, gdzie je znajdziesz). Jeśli nie możesz przewidzieć exe dir (np. Jakiś inny exe wywoła twój dll), być może będziesz musiał umieścić swój dll na ścieżce wyszukiwania (unikaj tego, jeśli to w ogóle możliwe!)
System32 i syswow64 są dla plików dostarczonych z systemem Windows ... nie dla innych plików . Jedyny powód, dla którego ludzie wpadli w zły nawyk umieszczania rzeczy, ponieważ zawsze znajduje się na ścieżce wyszukiwania, a wiele aplikacji / modułów używa statycznego łączenia. (Jeśli więc naprawdę do tego dojdziecie, prawdziwym grzechem jest łączenie statyczne - jest to grzech w natywnym kodzie i kodzie zarządzanym - zawsze zawsze łączy się dynamicznie!)