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.
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.
Ahaa... Ilmankos. Yritin tätä Borlandin kääntäjällä. Kiitti vinkistä, pitää yrittää ettiä toinen kääntäjä.
Voisin kokeilla, toimiiko tuolla vanhahkolla Microsoft Visual C++:lla (uskoisin, että toimii). Ilmoittelen sitten myöhemmin miten kävi.
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 )
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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.