/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
DLL exports
Fra : Ukendt


Dato : 02-07-03 17:59

Hej!

Jeg er så småt lige begyndt på C++ (læs: jeg er newbie), og skulle i dag
prøve mig med en DLL. En meget simpel DLL som skal eksportere en funktion
som følger

bool __declspec(dllexport) _stdcall SomeBoolValue()
{
return true;
}

Som sagt er jeg totalt newbie, men jeg læste mig frem på nettet til noget
med at de eksporterede funktioner skrives i en .DEF fil. Jeg har skrevet
følgende i den:

LIBRARY "test.dll"
EXPORTS
SomeBoolValue

MEN problemet er så, at jeg når jeg bruger min IDE (Dev-C++) til at compile
det med (tror det er MinGW der følger med), så fejler den og siger

[Linker error] undefined reference to `SomeBoolValue'

Det er nok en dum fejl jeg har lavet, eftersom jeg er newbie, men jeg aner
ikke hvad jeg lige skal gøre.

Kan I hjælpe?

På forhånd tak,
Patrick Kristiansen



 
 
Chris (03-07-2003)
Kommentar
Fra : Chris


Dato : 03-07-03 01:10

On Wed, 2 Jul 2003 18:58:32 +0200, "Patrick Kristiansen"
<patrickATsixulon.dk> wrote:

>bool __declspec(dllexport) _stdcall SomeBoolValue()
>{
> return true;
>}

>[Linker error] undefined reference to `SomeBoolValue'

Prøv at fjerne "__declspec(dllexport) _stdcall" og se om det ikke går
nu.

Chris
---
Reply with no _PRIVACY_ in mail address.

Ukendt (03-07-2003)
Kommentar
Fra : Ukendt


Dato : 03-07-03 15:20

Hej!

Jeg prøvede at gøre som du sagde, men fejlen var den samme. Umiddelbart
burde det vel være ret simpelt at få til at virke, men det gør det ganske
enkelt ikke. Til yderligere information kan jeg nævne, at jeg giver
linkeren --dev exports.def som parameter (altså exports.def indeholder
listen over mine eksporterede funktioner).

Mvh. Patrick

"Chris" <chris_PRIVACY_@ngweb.biz> skrev i en meddelelse
news:1ss6gv41ulu4lcbcuo6i91p4rh0ha3t1p3@4ax.com...
> On Wed, 2 Jul 2003 18:58:32 +0200, "Patrick Kristiansen"
> <patrickATsixulon.dk> wrote:
>
> >bool __declspec(dllexport) _stdcall SomeBoolValue()
> >{
> > return true;
> >}
>
> >[Linker error] undefined reference to `SomeBoolValue'
>
> Prøv at fjerne "__declspec(dllexport) _stdcall" og se om det ikke går
> nu.
>
> Chris
> ---
> Reply with no _PRIVACY_ in mail address.



Chris (03-07-2003)
Kommentar
Fra : Chris


Dato : 03-07-03 21:26

On Thu, 3 Jul 2003 16:19:38 +0200, "Patrick Kristiansen"
<patrickATsixulon.dk> wrote:

>Jeg prøvede at gøre som du sagde, men fejlen var den samme. Umiddelbart
>burde det vel være ret simpelt at få til at virke, men det gør det ganske
>enkelt ikke. Til yderligere information kan jeg nævne, at jeg giver
>linkeren --dev exports.def som parameter (altså exports.def indeholder
>listen over mine eksporterede funktioner).

Nu bruger jeg ikke selv Dev-C++. Jeg bruger MinGW32 fra
kommandolinjen, og jeg har normalt ikke problemer med at lave en DLL.

Mine *.def filer indeholder foreksempel (mydeffile.def):
EXPORTS
MyFunction

En typisk "myfuntion.c" fil indeholder:
int MyFunction ()
{
return 0;
}

Er der tale om en *.cpp fil, så lyt til Christians råd med extern "C".

Jeg linker mine objekter således:
dllwrap --def=mydeffile.def --output-lib=libmydll.a
--dllname=mydll.dll --driver-name=gcc myfuntion.o

Hilsen
Chris
---
Reply with no _PRIVACY_ in mail address.

Ukendt (04-07-2003)
Kommentar
Fra : Ukendt


Dato : 04-07-03 14:00

Hej!

Jeg prøver at følge hans råd, og ellers prøver jeg at køre det hele gennem
kommandolinjen i stedet. Sådan en IDE er aldrig til at stole helt på

Men tak for svarene begge to.

Mvh. Patrick

"Chris" <chris_PRIVACY_@ngweb.biz> skrev i en meddelelse
news:kp39gvotfe9ffg67lhk9ntajajpt5vg9on@4ax.com...
> On Thu, 3 Jul 2003 16:19:38 +0200, "Patrick Kristiansen"
> <patrickATsixulon.dk> wrote:
>
> >Jeg prøvede at gøre som du sagde, men fejlen var den samme. Umiddelbart
> >burde det vel være ret simpelt at få til at virke, men det gør det ganske
> >enkelt ikke. Til yderligere information kan jeg nævne, at jeg giver
> >linkeren --dev exports.def som parameter (altså exports.def indeholder
> >listen over mine eksporterede funktioner).
>
> Nu bruger jeg ikke selv Dev-C++. Jeg bruger MinGW32 fra
> kommandolinjen, og jeg har normalt ikke problemer med at lave en DLL.
>
> Mine *.def filer indeholder foreksempel (mydeffile.def):
> EXPORTS
> MyFunction
>
> En typisk "myfuntion.c" fil indeholder:
> int MyFunction ()
> {
> return 0;
> }
>
> Er der tale om en *.cpp fil, så lyt til Christians råd med extern "C".
>
> Jeg linker mine objekter således:
> dllwrap --def=mydeffile.def --output-lib=libmydll.a
> --dllname=mydll.dll --driver-name=gcc myfuntion.o
>
> Hilsen
> Chris
> ---
> Reply with no _PRIVACY_ in mail address.



Christian Larsen (03-07-2003)
Kommentar
Fra : Christian Larsen


Dato : 03-07-03 19:46

On Wed, 02 Jul 2003 18:58:32 +0200, Patrick Kristiansen wrote:

> Hej!
>
> Jeg er så småt lige begyndt på C++ (læs: jeg er newbie), og skulle i dag
> prøve mig med en DLL. En meget simpel DLL som skal eksportere en funktion
> som følger
>
> bool __declspec(dllexport) _stdcall SomeBoolValue()
> {
> return true;
> }
>
> Som sagt er jeg totalt newbie, men jeg læste mig frem på nettet til noget
> med at de eksporterede funktioner skrives i en .DEF fil. Jeg har skrevet
> følgende i den:
>
> LIBRARY "test.dll"
> EXPORTS
> SomeBoolValue
>
> MEN problemet er så, at jeg når jeg bruger min IDE (Dev-C++) til at compile
> det med (tror det er MinGW der følger med), så fejler den og siger
>
> [Linker error] undefined reference to `SomeBoolValue'
>
> Det er nok en dum fejl jeg har lavet, eftersom jeg er newbie, men jeg aner
> ikke hvad jeg lige skal gøre.

Jeg ved ikke om det er dét, men prøv at tilføje extern "C", så du får
noget a la flg.:

extern "C" bool __declspec(dllexport) _stdcall SomeBoolValue()
{
return true;
}

Jeg kan ikke huske om det er præcist der, det skal stå. Håber ikke jeg er
helt galt på den ;)

Vh
Christian Larsen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste