Проблема с Shell_NotifyIcon
От: Demaniac  
Дата: 24.07.06 22:08
Оценка:
Проблема вот в чём... Я использую следущие дерективы линкера:


#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:DllMain")
#pragma comment(linker,"/NODEFAULTLIB")



То есть отключаю CRT... А когда объявляю структуру типа NOTIFYICONDATA, то получаю ошибку:

core error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)

core error LNK2019: unresolved external symbol @__security_check_cookie@4 referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


Перепробовал уже, наверное, всё что можно...
Помогите, пожалуйста...
Re: Проблема с Shell_NotifyIcon
От: cod3r_200  
Дата: 25.07.06 03:04
Оценка:
Здравствуйте, Demaniac, Вы писали:

D>Проблема вот в чём... Я использую следущие дерективы линкера:



D>
D>#pragma comment(linker,"/MERGE:.rdata=.text")
D>#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
D>#pragma comment(linker,"/ENTRY:DllMain")
D>#pragma comment(linker,"/NODEFAULTLIB")
D>



D>То есть отключаю CRT... А когда объявляю структуру типа NOTIFYICONDATA, то получаю ошибку:


D>core error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


D>core error LNK2019: unresolved external symbol @__security_check_cookie@4 referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


D>Перепробовал уже, наверное, всё что можно...

D>Помогите, пожалуйста...

А так тоже пробывали?

#include <shellapi.h>
#pragma comment (lib, "shell32.lib ")

в мсдн ясно написано:

Header shellapi.h
Import library shell32.lib
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Проблема с Shell_NotifyIcon
От: Demaniac  
Дата: 25.07.06 07:05
Оценка:
Здравствуйте, cod3r_200, Вы писали:

_>Здравствуйте, Demaniac, Вы писали:


D>>Проблема вот в чём... Я использую следущие дерективы линкера:



D>>
D>>#pragma comment(linker,"/MERGE:.rdata=.text")
D>>#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
D>>#pragma comment(linker,"/ENTRY:DllMain")
D>>#pragma comment(linker,"/NODEFAULTLIB")
D>>



D>>То есть отключаю CRT... А когда объявляю структуру типа NOTIFYICONDATA, то получаю ошибку:


D>>core error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


D>>core error LNK2019: unresolved external symbol @__security_check_cookie@4 referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


D>>Перепробовал уже, наверное, всё что можно...

D>>Помогите, пожалуйста...

_>А так тоже пробывали?


_>
_>#include <shellapi.h>
_>#pragma comment (lib, "shell32.lib ")
_>

_>в мсдн ясно написано:

_>Header shellapi.h

_>Import library shell32.lib


Конечно же пробовал... Вылетает три тележки ошибок такого типа:

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(55): error C2501: 'DECLARE_HANDLE' : missing storage-class or type specifiers

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(57): error C2146: syntax error : missing ';' before identifier 'DECLSPEC_IMPORT'

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(58): error C2086: 'int UINT' : redefinition
Re[3]: Проблема с Shell_NotifyIcon
От: cod3r_200  
Дата: 25.07.06 07:50
Оценка:
Здравствуйте, Demaniac, Вы писали:

D>Конечно же пробовал... Вылетает три тележки ошибок такого типа:


D> C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(55): error C2501: 'DECLARE_HANDLE' : missing storage-class or type specifiers


D>C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(57): error C2146: syntax error : missing ';' before identifier 'DECLSPEC_IMPORT'


D>C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(58): error C2086: 'int UINT' : redefinition


С хедерами дето намутил значит .Если операция разовая, то получи динамически адрес ф-ции через GetProcAddress

пример:
typedef BOOL (*pShell_NotifyIcon)(DWORD dwMessage, PNOTIFYICONDATA lpdata);
HANDLE hShell = ::LoadLibrary(_T("shell32.dll"));
if (NULL != hShell) {
    pShell_NotifyIcon __pShell_NotifyIcon = (pShell_NotifyIcon) ::GetProcAddress(hShell, "Shell_NotifyIcon");
    if (__pShell_NotifyIcon != NULL) {
        __pShell_NotifyIcon(...);
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Проблема с Shell_NotifyIcon
От: Demaniac  
Дата: 25.07.06 15:50
Оценка:
Здравствуйте, cod3r_200, Вы писали:

_>Здравствуйте, Demaniac, Вы писали:


D>>Конечно же пробовал... Вылетает три тележки ошибок такого типа:


D>> C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(55): error C2501: 'DECLARE_HANDLE' : missing storage-class or type specifiers


D>>C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(57): error C2146: syntax error : missing ';' before identifier 'DECLSPEC_IMPORT'


D>>C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ShellAPI.h(58): error C2086: 'int UINT' : redefinition


_>С хедерами дето намутил значит .Если операция разовая, то получи динамически адрес ф-ции через GetProcAddress


_>пример:

_>
_>typedef BOOL (*pShell_NotifyIcon)(DWORD dwMessage, PNOTIFYICONDATA lpdata);
_>HANDLE hShell = ::LoadLibrary(_T("shell32.dll"));
_>if (NULL != hShell) {
_>    pShell_NotifyIcon __pShell_NotifyIcon = (pShell_NotifyIcon) ::GetProcAddress(hShell, "Shell_NotifyIcon");
_>    if (__pShell_NotifyIcon != NULL) {
_>        __pShell_NotifyIcon(...);
_>    }
_>}
_>



Открыл новый проект и перенёс весь код туда... Вы были правы, что-то с хедерами было... Последние ошибки уже не вылетают... Но по прежнему выдаёт первую ошибку... Вот Вам пример кода...


#include <windows.h>
#include <shellapi.h>
#include "resource.h"

#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:DllMain")
#pragma comment(linker,"/NODEFAULTLIB")

#pragma comment(lib, "shell32.lib ")

HINSTANCE hInst;

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved )
{
    hInst = (HINSTANCE)hModule;
    return TRUE;
}

void WndToTray( HWND hWnd )
{
    NOTIFYICONDATA nid;
}


Компилится в Release... Если закомментировать NOTIFYICONDATA nid;, то всё в порядке... Файл 3 кб получается...
Но если комментарий убрать, сразу кидает

error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)

Уже и не знаю что делать... А очень уж нужно...
Re[5]: Проблема с Shell_NotifyIcon
От: Boss Россия http://alex-boss.narod.ru
Дата: 25.07.06 16:03
Оценка:
D>error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)

D>Уже и не знаю что делать... А очень уж нужно...

А попробуйте в свойствах проекта
C/C++ -> Code Generation -> Buffer Security Check выставить в No
... << RSDN@Home 1.2.0 alpha rev. 648>>
Re[6]: Проблема с Shell_NotifyIcon
От: Demaniac  
Дата: 25.07.06 16:42
Оценка:
Здравствуйте, Boss, Вы писали:

D>>error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __cdecl WndToTray(struct HWND__ *)" (?WndToTray@@YAXPAUHWND__@@@Z)


D>>Уже и не знаю что делать... А очень уж нужно...

B>А попробуйте в свойствах проекта
B>C/C++ -> Code Generation -> Buffer Security Check выставить в No


Свершилось ЧУДО!!! Всё работает... Всем СПАСИБО за помощь...
Re[7]: Проблема с Shell_NotifyIcon
От: cod3r_200  
Дата: 25.07.06 21:22
Оценка:
Здравствуйте, Demaniac, Вы писали:

D>Свершилось ЧУДО!!! Всё работает... Всем СПАСИБО за помощь...


рады за Вас, а dll зверь, — 3 кб
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.