Buondì,
è da 1 mese che mi sono messo seriamente sul C++ e avrei alcune domande a problemi in cui mi sono imbattuto.
1) Tempo fa ho notato che in VirusTotal, nella sezione "Imports" si poteva vedere tutte le chiamate alle API ed alla dipendenza msvcrt.dll.
Sfogliandomi le opzioni di DevC++ (4.9.9.2) ho notato l'opzione "Project->Project options->Compiler->Linker->Do not use standard system startup files or libraries" che mi ha permesso di rimuovere quella schifezza e farmi avere un codice moolto più leggero (da 400 a 72kb...).
Per i primi piccoli problemi mi sono auto arrangiato usando Google ma ora il problema pare diverso perchè non riesco ad usare fstream nonostante ho googlato.
Gli errori che mi da l'ide sono:
codice:
[Linker error] undefined reference to `std::string::size() const'
[Linker error] undefined reference to `std::string::operator[](unsigned int) const'
[Linker error] undefined reference to `std::string::operator[](unsigned int) const'
[Linker error] undefined reference to `std::string::operator[](unsigned int) const'
[Linker error] undefined reference to `__gxx_personality_sj0'
[Linker error] undefined reference to `_Unwind_SjLj_Register'
e altri tipo
[Linker error] undefined reference to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(char const*, std::_Ios_Openmode)'
Ho anche provato ad aggiungere libstdc++.a ma gli errori si quadruplicano.
- Qual'è l'errore che sto commettendo?
- C'è un'alternativa per scrivere dentro un file?
- C'è un'alternativa più semplice per compilare senza dipendenze?
2) Siccome le API le chiamo in questo modo:
codice:
typedef HANDLE (WINAPI *__OpenMutex)
(
DWORD dwDesiredAccess,
BOOL bInheritHandle,
LPCTSTR lpName
);
__OpenMutex _OpenMutex = (__OpenMutex)GetProcAddress(GetModuleHandle("kernel32.dll"), "OpenMutexA");
Su MSDN ho visto che GetForegroundWindow() è strutturata così:
codice:
HWND WINAPI GetForegroundWindow(void);
percui pensavo che questo modo fosse corretto:
codice:
typedef HWND (WINAPI *__GetForegroundWindow)
(
void
);
__GetForegroundWindow_GetForegroundWindow= (__GetForegroundWindow)GetProcAddress(GetModuleHandle("user32.dll"), "GetForegroundWindow");
ma purtroppo mi fa crashare l'applicazione non appena la uso. Idee a proposito?
Ringrazio già in anticipo!
Buona notte :P