Przy budowie DLL COM, dlaczego eksport jak DllGetClassObject
, DllCanUnloadNow
, DllRegisterServer
, DllUnregisterServer
itd być oznaczone PRIVATE
w sekcji EXPORTS
powiązanej .DEF
pliku?Dlaczego eksporty COM DLL powinny być oznaczone jako "PRYWATNE"?
Odpowiedz
Podczas budowania biblioteki DLL łącznik automatycznie tworzy bibliotekę importu dla biblioteki DLL. Zawiera listę wszystkich wyeksportowanych funkcji. Korzystasz z tej biblioteki importu w innym projekcie korzystającym z biblioteki DLL.
Specyficzne dla serwerów COM jest to, że te 4 wyeksportowane funkcje są zawsze odnajdywane za pomocą funkcji GetProcAddress() i nigdy nie masz niejawnej zależności od biblioteki COM. Zawsze tworzysz obiekty COM za pomocą CoCreateInstance(), instalacja hydrauliczna COM zajmuje się lokalizacją biblioteki DLL i użyciem funkcji GetProcAddress() w celu znalezienia funkcji DllGetClassObject(). Ta sama historia dla DllUn/RegisterServer, znaleziona przez Regsvr32.exe. I DllCanUnloadNow, znalezione przez instalacje COM. Dlatego nie potrzebujesz biblioteki importu.
Użycie PRIVATE zapewnia, że funkcja nie zostanie wyeksportowana do biblioteki importu. Wszystkie z nich są prywatne, więc nie masz biblioteki importu. Nic nie pójdzie źle, jeśli go pominiesz, otrzymasz dodatkowy plik z linkera, którego nigdy nie będziesz używał.
- 1. Czy moje obiekty aktorów Akka powinny być oznaczone jako @volatile?
- 2. Różnica między tradycyjnym DLL DLL i COM
- 3. Dlaczego powinny być zwracane nazwy parametrów?
- 4. Fałszywe nieużywane metody "prywatne" powinny zostać usunięte.
- 5. Używanie tlbexp.exe na dll COM
- 6. rejestracja com dll w wix
- 7. Tylko właściwości powinny być usunięte
- 8. Czy klasy warstwy usług powinny być pojedynczymi?
- 9. Załadować dll COM w czasie wykonywania?
- 10. Powinny być używane jako odpowiednik Java dla IDisposable .NET?
- 11. Czy tablice powinny być traktowane jako struktury poziome lub pionowe?
- 12. Czy paski nawigacyjne zawsze powinny być wyświetlane jako listy?
- 13. Rejestracja .NET COM DLL podczas Wix zainstalować
- 14. maven pokazuje niektóre moduły oznaczone jako "nienazwane"
- 15. Dlaczego prywatne zmienne członkowskie mogą być zmieniane przez instancję klasy?
- 16. Jak złożone powinny być modele?
- 17. Rejestracja Free Com i manifestów dll
- 18. Dlaczego zależności powinny być uwzględniane tylko w kompilacjach wydań?
- 19. Dlaczego niektóre treści Sitecore nie powinny być indeksowane przez Solr?
- 20. Dlaczego separatory surowych literałów ciągów powinny być poniżej 16 znaków?
- 21. Dlaczego akcje grails powinny być zadeklarowane jako metody zamiast zamknięcia i jakie to ma znaczenie?
- 22. Kopiowanie konstruktora powinno być prywatne lub publiczne
- 23. Ruby on Rails: czy wszystkie metody wywołania zwrotnego ActiveRecord powinny być prywatne?
- 24. Dlaczego metody antlr3 C# parser są prywatne?
- 25. Tworzenie biblioteki DLL COM jest dostępne
- 26. COM msado15.dll Program przestał działać
- 27. Dlaczego biblioteka .NET COM nie może być używana przez COM w .NET?
- 28. Pole "___recordID" nie jest oznaczone jako zapytanie.
- 29. C# pole chronione jako prywatne, dodaj właściwość - dlaczego?
- 30. Jakie dokumenty powinny być przechowywane w kontroli wersji i jak powinny być przechowywane?