Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Różnica w działaniu programu z kompilacji przez GCC a MV C++ '10

Ostatnio zmodyfikowano 2013-01-27 03:28
Autor Wiadomość
Johnny
Temat założony przez niniejszego użytkownika
Różnica w działaniu programu z kompilacji przez GCC a MV C++ '10
» 2013-01-17 18:21:42
Ogólnie rzecz biorąc zależało mi na tym aby program był w miarę przenośny co umożliwia kompilacja przez GCC lecz niestety aplikacja spod GCC działa nie tak jak bym sobie tego życzył :(. W MV wszystko działa idealnie lecz do uruchomienia na innych systemach pokroju XP czy Vista wymagane są dodatkowe biblioteki typu "msvcr100.dll". W CB12 nie działa nawet przełączenie typu aplikacji z konsolowej do API.

oto kawałek kodu który się wykonuje:
C/C++
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    HANDLE hThread;
    DWORD dwThread;
    hThread = CreateThread( NULL, NULL,( LPTHREAD_START_ROUTINE ) KeyToTray, NULL, NULL, & dwThread );
    if( hThread )
    {
        return WaitForSingleObject( hThread, INFINITE );
    }
    else
    {
        return 1;
    }
}
 
"KeyToTray" to funkcja do przechwytywania zdarzeń typu LowLevel z klawiatury.

I tu rodzi się moje pytanie po tygodniowej walce z tym problemem: czy można uruchomić program spod GCC aby konsola się nie pojawiała, tak jak to robi MV10 ?

//Johnny
P-74230
xevuel
» 2013-01-17 18:26:46
Użycie WinAPI powoduje że kod nie jest przenośny, niezależnie od kompilatora którego wykorzystasz. Bez wynalazków w stylu Unixowego Wine nie odpalisz tego na innych systemach...
P-74231
Elaine
» 2013-01-17 18:27:15
I tu rodzi się moje pytanie po tygodniowej walce z tym problemem: czy można uruchomić program spod GCC aby konsola się nie pojawiała, tak jak to robi MV10 ?
-mwindows

Użycie WinAPI powoduje że kod nie jest przenośny, niezależnie od kompilatora którego wykorzystasz.
GCC używa w swoim kodzie WinAPI, czy to sprawia, że GCC przestaje być przenośne?
Poza tym bądźmy szczerzy, przenośność nie zawsze ma znaczenie.
P-74232
Johnny
Temat założony przez niniejszego użytkownika
» 2013-01-17 18:31:41
Bardziej miałem na myśli o przenośności na starsze edycje systemów z rodziny windowsów ;p a parametr "-mwindows" nie robi nic, ponieważ konsola dalej się pojawia..

Może źle to ująłem, miałem na myśli wsteczną kompatybilność z systemami xp i vista.
P-74233
Elaine
» 2013-01-17 18:33:42
a parametr "-mwindows" nie robi nic, ponieważ konsola dalej się pojawia
Podajesz to w opcjach kompilacji czy w opcjach linkowania? Powinieneś w tych drugich.
P-74234
Johnny
Temat założony przez niniejszego użytkownika
» 2013-01-17 18:35:14
Parametr mam podany w obydwu i w obydwu przypadkach nie działa.
P-74235
Mrovqa
» 2013-01-18 17:02:32
Parametr mam podany w obydwu i w obydwu przypadkach nie działa.
Artur@KOMPUTER ~
$ echo int main\(\){} > wtest.cpp

Artur@KOMPUTER ~
$ cat wtest.cpp
int main(){}

Artur@KOMPUTER ~
$ g++ wtest.cpp -o wtest.exe -mwindows

Artur@KOMPUTER ~
$ g++ wtest.cpp -o wtest2.exe

Artur@KOMPUTER ~
$
Przy włączaniu wtest2.exe miga mi konsola, jednakże przy wtest.exe konsoli nie ma. Coś musisz źle robić.
P-74295
crash
» 2013-01-27 03:28:42
A może by tak...

C/C++
#include <windows.h>

...

HWND window = GetConsoleWindow();
ShowWindow( window, SW_HIDE );

edit: nie chciało mi się sprawdzić, czy zadziała, więc nie odpowiadam za efekt ;p
P-75138
« 1 »
  Strona 1 z 1