Я просмотрел __attribute__((constructor)) equivalent in VC? и CRT Initialization, которые были полезны в отношении gcc-специфического __attribute__((constructor))
. Но как насчет __attribute__((destructor))
? Есть ли эквивалент VC?__attribute __ ((деструктор)) эквивалент в VC?
4
A
ответ
2
Если вы делаете динамическую библиотеку, вы можете сделать свой DllMain entry point справиться с этим:
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
// equivalent of __attribute__((constructor))...
// return TRUE if succeeded, FALSE if you failed to initialize properly
return TRUE; // I'm assuming you succeeded.
}
else if (fdwReason == DLL_PROCESS_DETACH)
{
// equivalent of __attribute__((destructor))...
}
// Return value is ignored when fdwReason isn't DLL_PROCESS_ATTACH, so we'll
// just return TRUE.
return TRUE;
}
+0
Интересно и на самом деле кажется более понятным, чем gcc '__attribute__'. Я прислушаюсь к предупреждениям о 'DllMain' и посмотрю, что я могу сделать. Благодаря! – nonexplosive
Смежные вопросы
- 1. Портативный эквивалент __attribute __ ССЗ (очистки)
- 2. Существует ли бычный эквивалент GCC `__attribute __ ((constructor))`?
- 3. __attribute __ ((упакована)) и __attribute __ ((__ packed__))
- 4. В чем смысл символа «вектор, удаляющий деструктор» в VC++?
- 5. Что такое эквивалент «объекта C#» в VC++?
- 6. VC++ Эквивалент typdef ничтожного * в VB6
- 7. vC++ ipconfig cmd-эквивалент в Windows
- 8. Эквивалент BSTR обертки C# в VC++
- 9. Нет-MFC эквивалент AfxGetThreadState в VC++
- 10. Есть ли эквивалент __attribute __ ((ns_returns_retained)) для указателя malloc'd?
- 11. __attribute __ ((const)) vs __attribute __ ((чистый)) в GNU C
- 12. Преобразование сериализованной Java Двойной эквивалент VC++ type
- 13. __attribute __ ((init_priority (X))) в GCC
- 14. Пользовательская поддержка __attribute __ ((format))
- 15. __attribute __ ((раздел («имя»))) использование?
- 16. __attribute __ ((слабый)) и LD_PRELOAD
- 17. safe __attribute __ ((конструктор)) классы функций
- 18. __attribute __ ((constructor)) function and autorelease
- 19. Does unique_ptr :: release() вызывает деструктор?
- 20. Почему __attribute __ ((конструктор)) работает в статической библиотеке?
- 21. Поиск последней переменной в __attribute __ (section)
- 22. gcc-эквивалент предупреждения VC++ C4018: несоответствие подписанного/неподписанного
- 23. NULL В деструктор
- 24. деструктор LinkedListelement в C++
- 25. Деструктор в Objective-C++
- 26. Деструктор в C++
- 27. Деструктор в многопоточной среде?
- 28. виртуальный деструктор в C++
- 29. Условия ввода в деструктор
- 30. Деструктор в Asp.net
ответ вы связаны дает эквивалентные функциональные возможности, с использованием atexit См http://msdn.microsoft .com/en-us/library/tze57ck3.aspx – manuell
В случае с библиотеками - очень мало вы можете сделать безопасно в 'DllMain' (чтение: функции вызова Kernel32.dll до тех пор, пока они не загружают библиотеки - и практически ничего больше). К сожалению, другие методы ('atexit' и т. Д.) Не намного лучше, поскольку они, как правило, реализуются через' DllMain'. В таких случаях переписать код, как правило, легко. –
Возможный дубликат атрибута [\ _ \ _] \ _ \ _ ((конструктор)) эквивалентен в VC?] (Http://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc) – jww