Avatar billede sessa Nybegynder
28. november 2007 - 11:45 Der er 4 kommentarer og
1 løsning

Kompilering fra kommando-prompt

Jeg bruger normalt Borland C++Builder 5.0, men sommetider har jeg brug for at indsætte assembler-statements i C++ kode, og det kan jeg af en eller anden mærkelig grund ikke få til at virke med C++Builder.
Men jeg har opdaget, at hvis jeg kompilerer et program fra en
kommando-prompt kan det godt lade sig gøre. Så er der til gengæld det underlige, at jeg er nødt til at køre den exe-fil, der kommer ud af det, fra kommando-prompten. Så virker det, som det skal. Men hvis jeg bare dobbeltklikker filen, så slutter programmet øjeblikkeligt. Jeg har ellers sat switchen -tW som parameter til bcc32.exe - og det skulle jo frembringe et
Windows-program.

Men det må vel alligevel blive opfattet som et konsol-program. Hvordan undgår jeg det, så jeg kan starte programmet normalt ved at dobbeltklikke?
Avatar billede sessa Nybegynder
01. december 2007 - 16:51 #1
Ingen forslag?
Avatar billede segmose Nybegynder
06. december 2007 - 10:09 #2
Hvad mener du med at det ikke virker fra builder? kan det ikke compile eller hvad?

start et nyt projekt med et par assembler linier og som win32, virker det? hvis ja så sammenlign options med dit eget project.
Avatar billede sessa Nybegynder
06. december 2007 - 12:24 #3
Ja, der var vel egentlig to spørgsmål i mit spørgsmål:

1. Hvis jeg har et C++ program i C++Builder og kompilerer det, så virker det, som det skal. Indsætter jeg så et assembler-statement, f.eks bare

asm nop

...sådan rent forsøgsvis, så skriver den "Restarting compile using assembler". Den laver så en fil med endelsen .asm

Denne fil inkluderer jeg i programmet ( og jeg fortæller den osse, hvor den kan finde diverse include-filer ), men nu vil den ikke kompilere. Det virker bare ikke, og jeg aner ikke hvorfor.

2. Det andet ( og egentlige ) spørgsmål går så på, at jeg godt kan indsætte assembler-statements og få det til at virke, bare jeg kompilerer fra en kommando-prompt. Men så skal mit program osse STARTES fra en kommando-prompt. Hvis jeg bare dobbeltklikker exe-filen, når jeg kun lige at se, at der sker et eller andet. Og så lukker programmet ned øjeblikkeligt.
Avatar billede sessa Nybegynder
12. december 2007 - 19:50 #4
Nu har jeg fundet ud af, hvad jeg skal gøre for at kunne starte programmet ved at dobbeltklikke, men det ændrer ikke på, at jeg synes, det er mærkeligt:

Programmet starter en dialogbox...

int DialogBoxParam(
    HINSTANCE hInstance,    // handle to application instance
    LPCTSTR lpTemplateName,    // identifies dialog box template
    HWND hWndParent,            // handle to owner window
    DLGPROC lpDialogFunc,    // pointer to dialog box procedure 
    LPARAM dwInitParam             // initialization value
  );   

...og det viser sig, at hvis jeg lader hWndParent være NULL, så fungerer det. Så kan jeg både starte programmet fra en kommandoprompt og ved at dobbeltklikke filen.
Men hvis hWndParent faktisk ER "handle to owner window", så SKAL det startes fra en kommandoprompt!

Er der en, der kan forklare, hvordan det kan være?
Avatar billede sessa Nybegynder
27. december 2007 - 12:26 #5
Jeg må vist hellere lukke...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester