Imam neku biblioteku pisanu u C-u (ne C++) koju bih da koristim u Delphi-ju, ali bez DLL-a jer me mrzi da ga svaki put isporucujem uz software. Kompajlirani .obj fajl sam uvezao u Delphi pomocu {$L} direktive i, naravno, linker se buni da ne moze da pronadje neke (mnoge) funkcije. Deo problema je resen jednostavnim ukljucivanjem unit-a (za npr mmioOpen), ali Delphi nema jedinice sa malloc, free, memcpy itd.
Jedini nacin da resim ovo koji mi je pao na pamet (buduci da sam "veoma iskusan" C programer) je da uradim nesto tipa:
Code:
void* _RTLENTRY _EXPFUNC my_malloc(_SIZE_T __size) {
return malloc(__size);
}
void* _export _RTLENTRY _EXPFUNC malloc(_SIZE_T __size) {
return my_malloc(__size);
}
void* _RTLENTRY _EXPFUNC my_malloc(_SIZE_T __size) {
return malloc(__size);
}
void* _export _RTLENTRY _EXPFUNC malloc(_SIZE_T __size) {
return my_malloc(__size);
}
E, sad, kako da kazem kompajleru da je funkcija malloc koju poziva my_malloc iz stdlib.h? U Delphiju bih to lako sa stdlib.malloc, u C++ (mislim) ukljucim cstdlib i std::malloc, a kako ovde? Da li mozda postoji neki nacin simuliranja overloadinga u C-u? Onda bi bilo mnogo lakse...
E, da, C kod je kompajliran u C++ Builder-u, jer Delphi podrzava OMF format...