Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: C-ohjelmien linkitys Qbasiciin??

J.J. [10.11.2004 19:08:39]

#

Osaisko joku neuvoa miten c-funktioiden käyttö qbasicissa tapahtuu? Qbasicin ohjeen mukaan tämä pitäisi olla mahdollista.

Kokeilin kääntää c-koodin obj-tiedostoksi ja sitä kautta qlb-tiedostoksi ja linkitin sen qbasic-ohjelmaan, mutta
ei toiminut.

Antti Laaksonen [10.11.2004 19:52:27]

#

C-kielisen koodin yhdistäminen pitäisi onnistua samaan tapaan kuin assemblyllä tehdyn, eli mainitsemasi periaate on oikea. Mutta C-kääntäjäksi ei kelpaa mikä tahansa, vaan pitänee olla Microsoftin oma silloinen C-kääntäjä. QB7.1:n ohjeessa on mainittuna kääntäjät C Compiler (vähintään versio 5.10) ja QuickC Compiler (vähintään versio 1.01). Minä en kyllä ole onnistunut yhdistämään C-koodia QB-ohjelmiin, koska en ole yrityksistä huolimatta löytänyt sopivaa kääntäjää Googlella.

J.J. [10.11.2004 20:23:46]

#

Ahaa... Ilmankos. Yritin tätä Borlandin kääntäjällä. Kiitti vinkistä, pitää yrittää ettiä toinen kääntäjä.

thefox [12.11.2004 19:27:31]

#

Voisin kokeilla, toimiiko tuolla vanhahkolla Microsoft Visual C++:lla (uskoisin, että toimii). Ilmoittelen sitten myöhemmin miten kävi.

pieslice [21.11.2004 00:29:12]

#

itse olen kyllä saanut Borlandin ( 4.53 ) koodia linkitetyksi QB:hen.
memory modelin pitää olla large, muuten ohjelma kaatuu.
koodi pitää kääntää C:nä, ei C++:sana koska QB ei osaa tulkita C++ kutsuja.

esim.

c-koodiin pitää laittaa funktioden määritykseen avainsana far, esim

void far Render( int far muuttuja1, int far muuttuja2 )
{
... koodia ...
}


ja QB:ssa declaren eteen cdecl
declare sub cdecl Render( byval m1 as integer, byval m2 as integer )

J.J. [21.11.2004 16:44:34]

#

Kokeilin QuickC Compilerilla ja Turbo C:llä tehtyjä ohjelmia, mutta tulokset oli aika heikkoja. Joku yksinkertanen ohjelma toimi, kuten

int far max(int a, int b)
{
if(a>b)return a else return b;
};


Mutta jos koodi oli vähänkin monimutkaisempi, tulos
oli täyttä paskaa (tai ohjelman kaatuminen).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta