Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 3.318 pregleda

Najnovija ↓

C Dinamic Library + VB 11.10.2006. u 23:00 · pre 244 meseca
izmenjeno 1 put, poslednji put icobh 12.10.2006. u 10:54
  1. icobh12.10.2006. u 10:54zapis iz teksta poruke
#1
Mučim se već 2 sata, ne mogu da skontam gdje griješim. Naime, napisao sam jedan DLL u C-u i pozivam f-ju iz te biblioteke iz VB-a. Evo kako izgleda sporna f-ja:

Code:
DLLIMPORT void Save (long pos, int brl){
          
FILE *T;

T=fopen("Greska.txt","w");

fprintf(T,"%ld %d",pos,brl);

fclose(T);      
}


A ovako deklarišem i pozovem iz VB Programa:

Code:
Private Declare Function Save Lib "test.dll" (ByVal a As Long, ByVal b As Integer) As Variant

Private Sub Command1_Click()
    Save 48, 49
End Sub 


Ali kad odem u ovaj fajl (Greska.txt) tamo umjesto 48 49 imam 1242340 48! Ili nekad zna biti 1242350 1242354! Ovo mi mnogo liči na adrese ali odakle ovo 48 kao drugi broj, kada sam mu ja proslijedio kao prvi? Da li sam negdje pogriješio ili šta već, ovo počinje da me nervira!
Potpis
I ♥ ♀

Ovaj post je zlata vrijedan!
Re: C Dinamic Library + VB 12.10.2006. u 13:08 · pre 244 meseca #2
Vjerovatno se radi o drugacijem tipu poziva funkcije.
Kao sto znas ima vise tipova poziva: __fastcall, __stdcall, __pascal ...
Pokusaj saznati koju vrstu poziva po defaultu koristi visual basic pa onda ispred definicije funkcije stavi
__fastcall, __stdcall ili neki drugi.
npr.
Code:

__fastcall DLLIMPORT void Save (long pos, int brl)

to je prvo sto mi pada na pamet.
Mozda sam napravio gresku u kodu.
pozdrav!
Potpis
[email protected]
Re: C Dinamic Library + VB 12.10.2006. u 14:47 · pre 244 meseca
izmenjeno 1 put, poslednji put icobh 12.10.2006. u 20:37
  1. icobh12.10.2006. u 20:37zapis iz teksta poruke
#3
Isprobao sam sve mogućnosti, vidio sam da fastcall mijenja one vrijednosti ali ne u željene! Izgleda da je problem u mom GCC kompajleru!

P.S. Otklonio sam "kvar"! Kvaka je u GCC-u, jer je to compiler prvenstveno za unixoide, stoga koristi drugačiji poziv funkcija, tj. __cdecl.

Rješenje sa našao ovdje: http://www.mingw.org/MinGWiki/...747374cbb2c70240ba7acf65a1bc5c

To je baš ono što mi je trebalo :)
Potpis
I ♥ ♀

Ovaj post je zlata vrijedan!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme