Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Visual C++ 2005 - Izrada Dll-a

[es] :: C/C++ programiranje :: Visual C++ 2005 - Izrada Dll-a

[ Pregleda: 3224 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Visual C++ 2005 - Izrada Dll-a02.03.2006. u 17:05 - pre 220 meseci
Htio bih napraviti obican DLL, ali uvijek mi za svaku funkciju javi Bad Calling convention. Znam sto je to, ali ne kuzim u cemu je greska. Ovo bi mi radilo na VS 2003. Molim pomoc. Zahvaljujem

Code:
#include "stdafx.h"


#ifdef _MANAGED
#pragma managed(push, off)
#endif

extern "C" double __declspec(dllexport) Suma(double a, double b){
    return a + b;
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif


Problem nije u prevodjenu. Problem nastaje kada funkciju Suma treba pozvati npr. iz nekog EXE programa. Tad javlja bad calling convention


[Ovu poruku je menjao itf dana 02.03.2006. u 18:15 GMT+1]
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Visual C++ 2005 - Izrada Dll-a03.03.2006. u 13:24 - pre 220 meseci
Da li, kada koristis taj DLL, koristis u deklaraciji te funkcije __declspec(dllimport) ?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.fsb.hr.



+9 Profil

icon Re: Visual C++ 2005 - Izrada Dll-a03.03.2006. u 13:55 - pre 220 meseci
Citat:
leka: Da li, kada koristis taj DLL, koristis u deklaraciji te funkcije __declspec(dllimport) ?

Ne. A zasto? Nikad to nisam koristio a uvijek mi je sve radilo. Ovaj isti kod dobro radi kada se Dll compilira pod VS 2003. Tada mi ne javlja gresku da je kriva konvencija poziva, ali ako ovaj kod prevedem u VS 2005 tada mi kada zelim pozvati tu funkciju iz nekog C++ ili VB programa izbaci "bad calling convention".

Zanima me sto se tocno promjenilo u VS 2005 pa da vise stari kod ne daje iste rezultate kao u VS 2003?

[Ovu poruku je menjao itf dana 03.03.2006. u 14:57 GMT+1]
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Visual C++ 2005 - Izrada Dll-a03.03.2006. u 20:41 - pre 220 meseci
Mislim da je pojacana podrska standardu.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.lionbridge.com.



+6 Profil

icon Re: Visual C++ 2005 - Izrada Dll-a03.03.2006. u 20:53 - pre 220 meseci
Probaj da dodaš "WINAPI" deklaraciji.
 
Odgovor na temu

SambucusELF
Marko Radojčić
student
Stara Pazova

Član broj: 79125
Poruke: 62
212.200.179.*

ICQ: 359912898
Sajt: www.myspace.com/vilenjak


Profil

icon Re: Visual C++ 2005 - Izrada Dll-a18.02.2007. u 11:39 - pre 208 meseci
ok,

Citat:
leka: Da li, kada koristis taj DLL, koristis u deklaraciji te funkcije __declspec(dllimport) ?


kako to uopste?

kako se poziva dll iz c++ programa?

jel dovoljno da stavim header tog dll-a u program, deklarisem ga i pozovem,

radim u gcc kompajleru na win32 platformi u Dev-C++

Sve se menja.
Promena je stanje koje je konstanto. ??? Ups, kako to?

http://blender-srbija.forummotion.com/
 
Odgovor na temu

SambucusELF
Marko Radojčić
student
Stara Pazova

Član broj: 79125
Poruke: 62
212.200.179.*

ICQ: 359912898
Sajt: www.myspace.com/vilenjak


Profil

icon Re: Visual C++ 2005 - Izrada Dll-a18.02.2007. u 11:51 - pre 208 meseci
ok, skontao sam sam... hvala na potencijalnom odgovoru...


marko

Sve se menja.
Promena je stanje koje je konstanto. ??? Ups, kako to?

http://blender-srbija.forummotion.com/
 
Odgovor na temu

SambucusELF
Marko Radojčić
student
Stara Pazova

Član broj: 79125
Poruke: 62
87.250.52.*

ICQ: 359912898
Sajt: www.myspace.com/vilenjak


Profil

icon Re: Visual C++ 2005 - Izrada Dll-a21.02.2007. u 12:31 - pre 208 meseci
jos jedan dodatak + jedno pitanje...

pozivanje dll -a mi je pomoglo da skontam kako to generalno funkcionise, ali sta se desava
kad hocu da pozovem nesto sto treba da radi sa pointer-om

dakle, proceduri za zbir se proslede dva pointera do objekata klase koja sadrzi samo
konstruktor, desktroktor, i metode za upis i citanje jedine promeljive - int broj;

i dll i program imaju ubacen header file klase u kojoj joj je deklaracij, a definicija klase se ubacuje na kraju
header file-a sa deklaracijom, komandom #include.

kompajliraju se i program i dll. iskopiram dll gde je program i to ne radi...

pretpostavljam da je zbog toga sto promenljivu u kojoj je rezultat inicijalizujem

ovako u proceduri:
Code:

DllClass::DllClass(){
Celi* sadrzaj = new Celi(); 
}

i ovako unistavam:

DllClass::~DllClass()
{
delete(sadrzaj);
sadrzaj=NULL;
}


...

mozda bi trebalo tamo gde je DLL_ATTACH_PROCESS:
i
DLL_DETACH_PROCESS:
.

Ovo ne moze da se odradi u proceduri u kojoj se racuna zbir posto ona vraca pointer,
pa posle ne mogu da ga obrisem, a necu da napravim memory leak;

probacu kad dodjem kuci ovu drugu varijantu, ali ... da li do tada ima nekih novih saveta?

Poslacu i ceo kod kad dodjem kuci, ako treba.


Sve se menja.
Promena je stanje koje je konstanto. ??? Ups, kako to?

http://blender-srbija.forummotion.com/
 
Odgovor na temu

[es] :: C/C++ programiranje :: Visual C++ 2005 - Izrada Dll-a

[ Pregleda: 3224 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.