Thread

Getting Started with SDK (Sdk)

Getting Started with SDK // Sdk

1  |  

fungus

Jan 10, 1999, 3:54pm
Okay, here's a real simple question for you guys:

I'm just trying to get the example sdk greeterbot up and running under
VC++. When I try to build I get error message: unable to open file
aw.lib. I have the aw.dll, aw.lib and greeterbot source all attached to
the project, so what's the problem?

I'd be the first to admit that the problem is probably my lack of
understanding of how to use the program in the 1st place, bu if you
could set me straight it'd give me a starting point to work from :-)

fungus

Jan 10, 1999, 9:57pm
Hmm, perhaps I should post some more details too:

Info :Building...
Info :Compiling D:\bots\funbot.cpp
Warn : funbot.cpp(19,11):Possibly incorrect assignment
Warn : funbot.cpp(28,11):Possibly incorrect assignment
Warn : funbot.cpp(38,11):Possibly incorrect assignment
Warn : funbot.cpp(44,11):Possibly incorrect assignment
Warn : funbot.cpp(53,11):Possibly incorrect assignment
Info :Linking D:\bots\second.exe
Error: Error: Unresolved external '_aw_init' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_event_set' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_create' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_string_set' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_login' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_enter' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_int_set' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_state_change' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_wait' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_destroy' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_term' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_say' referenced from
D:\BOTS\FUNBOT.OBJ
Error: Error: Unresolved external '_aw_string' referenced from
D:\BOTS\FUNBOT.OBJ

of source:

#include "aw.h"
#include <stdio.h>
#include <stdlib.h>

void handle_avatar_add (void);

main (int argc, char *argv[])
{

int rc;

/* check command line */
if (argc < 3) {
printf ("Usage: %s number password\n", argv[0]);
exit (1);
}

/* initialize Active Worlds API */
if (rc = aw_init (AW_BUILD)) {
printf ("Unable to initialize API (reason %d)\n", rc);
exit (1);
}

/* install handler for avatar_add event */
aw_event_set (AW_EVENT_AVATAR_ADD, handle_avatar_add);

/* create bot instance */
if (rc = aw_create (0, 0, 0)) {
printf ("Unable to create bot instance (reason %d)\n", rc);
exit (1);
}

/* log bot into the universe */
aw_int_set (AW_LOGIN_OWNER, atoi (argv[1]));
aw_string_set (AW_LOGIN_PRIVILEGE_PASSWORD, argv[2]);
aw_string_set (AW_LOGIN_APPLICATION, "SDK Sample Application #1");
aw_string_set (AW_LOGIN_NAME, "GreeterBot");
if (rc = aw_login ()) {
printf ("Unable to login (reason %d)\n", rc);
exit (1);
}

/* log bot into the world called "beta" */
if (rc = aw_enter ("Beta", 0)) {
printf ("Unable to enter world (reason %d)\n", rc);
exit (1);
}

/* announce our position in the world */
aw_int_set (AW_MY_X, 1000); /* 1W */
aw_int_set (AW_MY_Z, 1000); /* 1N */
aw_int_set (AW_MY_YAW, 2250); /* face towards GZ */
if (rc = aw_state_change ()) {
printf ("Unable to change state (reason %d)\n", rc);
exit (1);
}

/* main event loop */
while (!aw_wait (-1))
;

/* close everything down */
aw_destroy ();
aw_term ();
return 0;

}

void handle_avatar_add (void)
{

char message[100];

sprintf (message, "Hello %s", aw_string (AW_AVATAR_NAME));
aw_say (message);
/* log the event to the console */
printf ("avatar_add: %s\n", aw_string (AW_AVATAR_NAME));

}

[View Quote] > Okay, here's a real simple question for you guys:
>
> I'm just trying to get the example sdk greeterbot up and running under
> VC++. When I try to build I get error message: unable to open file
> aw.lib. I have the aw.dll, aw.lib and greeterbot source all attached to
> the project, so what's the problem?
>
> I'd be the first to admit that the problem is probably my lack of
> understanding of how to use the program in the 1st place, bu if you
> could set me straight it'd give me a starting point to work from :-)

walter knupe

Jan 10, 1999, 10:36pm
Was my answer in AWGames sufficient, Fungus ?

Walter aka Faber

edward sumerfield

Jan 11, 1999, 2:43am
I am not sure how much you know so let me give you some background.

The development process.

.c + .h = .o or .obj
.o + .o = .lib
.o + .o = .dll
.o +.o + .lib + .lib = .exe
.exe + .dll + dll = runing program.

So, if that makes any sense, you have a greeter.c and an aw.h and a couple of
other include files that, when compiled produce a .obj file. Then you take
your .obj file and combine it with the aw.lib file provided by AW and you get
an exe files that you can run.

Note that you do not need the aw.lib and the aw.dll. You can use one of the
other and because you are using VC++ you can use the aw.lib file without any
problems.

You mentioned that you added aw.lib to you project. The wording of this
statement could mean a few things but let me make some statements that may
clarify it for you:

1. Do not add the aw.lib as a file to the project.
2. Add the aw.lib into the project options dialogue box under linker
options.

Forgive me for not adding all the details but Walter is the VC++ expert. He
can tell you the exact name of the tab and so forth, but look under project
options somewhere.

Your project should only include the greeter.c file, you shouldn't even add
the aw.h file to it. that will be included at compile time using the include
paths you will set up. Again, look in project options, under compile and add
the path.

Hope this helps.

Edward Sumerfield, 28021232 (my new ICQ address).

[View Quote] > Hmm, perhaps I should post some more details too:
>
> Info :Building...
> Info :Compiling D:\bots\funbot.cpp
> Warn : funbot.cpp(19,11):Possibly incorrect assignment
> Warn : funbot.cpp(28,11):Possibly incorrect assignment
> Warn : funbot.cpp(38,11):Possibly incorrect assignment
> Warn : funbot.cpp(44,11):Possibly incorrect assignment
> Warn : funbot.cpp(53,11):Possibly incorrect assignment
> Info :Linking D:\bots\second.exe
> Error: Error: Unresolved external '_aw_init' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_event_set' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_create' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_string_set' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_login' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_enter' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_int_set' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_state_change' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_wait' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_destroy' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_term' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_say' referenced from
> D:\BOTS\FUNBOT.OBJ
> Error: Error: Unresolved external '_aw_string' referenced from
> D:\BOTS\FUNBOT.OBJ
>
> of source:
>
> #include "aw.h"
> #include <stdio.h>
> #include <stdlib.h>
>
> void handle_avatar_add (void);
>
> main (int argc, char *argv[])
> {
>
> int rc;
>
> /* check command line */
> if (argc < 3) {
> printf ("Usage: %s number password\n", argv[0]);
> exit (1);
> }
>
> /* initialize Active Worlds API */
> if (rc = aw_init (AW_BUILD)) {
> printf ("Unable to initialize API (reason %d)\n", rc);
> exit (1);
> }
>
> /* install handler for avatar_add event */
> aw_event_set (AW_EVENT_AVATAR_ADD, handle_avatar_add);
>
> /* create bot instance */
> if (rc = aw_create (0, 0, 0)) {
> printf ("Unable to create bot instance (reason %d)\n", rc);
> exit (1);
> }
>
> /* log bot into the universe */
> aw_int_set (AW_LOGIN_OWNER, atoi (argv[1]));
> aw_string_set (AW_LOGIN_PRIVILEGE_PASSWORD, argv[2]);
> aw_string_set (AW_LOGIN_APPLICATION, "SDK Sample Application #1");
> aw_string_set (AW_LOGIN_NAME, "GreeterBot");
> if (rc = aw_login ()) {
> printf ("Unable to login (reason %d)\n", rc);
> exit (1);
> }
>
> /* log bot into the world called "beta" */
> if (rc = aw_enter ("Beta", 0)) {
> printf ("Unable to enter world (reason %d)\n", rc);
> exit (1);
> }
>
> /* announce our position in the world */
> aw_int_set (AW_MY_X, 1000); /* 1W */
> aw_int_set (AW_MY_Z, 1000); /* 1N */
> aw_int_set (AW_MY_YAW, 2250); /* face towards GZ */
> if (rc = aw_state_change ()) {
> printf ("Unable to change state (reason %d)\n", rc);
> exit (1);
> }
>
> /* main event loop */
> while (!aw_wait (-1))
> ;
>
> /* close everything down */
> aw_destroy ();
> aw_term ();
> return 0;
>
> }
>
> void handle_avatar_add (void)
> {
>
> char message[100];
>
> sprintf (message, "Hello %s", aw_string (AW_AVATAR_NAME));
> aw_say (message);
> /* log the event to the console */
> printf ("avatar_add: %s\n", aw_string (AW_AVATAR_NAME));
>
> }
>
[View Quote]

fungus

Jan 11, 1999, 6:49pm
okay, (now I've actually read the manual that came with C++) so hopefully I
can ask this question more meaningfully ;-)

- Um, it's not VC++ but Borland C++

- It looks like I can compile everything just fine, apart from
- if I just try to create an .exe, with my bot.cpp file linking to
aw.h no problems
and no other files in the project I get Unresolved external
'_aw_XXXXX'
errors. I'm guessing that's because I haven't linked in aw.lib
properly.
- If I link the aw.lib file to the .exe I get Error:
'D:\BOTS\AW.LIB' contains
invalid OMF record, type 0x21

Thanks for the advice Edward and Faber (no, it isn't fixed :( but the
idiots introduction to C++ was very helpful, unlike the manuals)

walter knupe

Jan 11, 1999, 7:48pm
now thats a difference.. the aw.lib is not in borland library format, so you
would have to use
a impdef.exe or similar to generate aw.lib from the aw.dll yourself. i
cannot provide more detail since i don't know borland good enough...

Walter

Fungus schrieb in Nachricht <369A63EE.9AB1D24B at hotmail.com>...
>okay, (now I've actually read the manual that came with C++) so hopefully I
>can ask this question more meaningfully ;-)
>
>- Um, it's not VC++ but Borland C++
>
>- It looks like I can compile everything just fine, apart from
> - if I just try to create an .exe, with my bot.cpp file linking to
>aw.h no problems
> and no other files in the project I get Unresolved external
>'_aw_XXXXX'
> errors. I'm guessing that's because I haven't linked in aw.lib
>properly.
> - If I link the aw.lib file to the .exe I get Error:
>'D:\BOTS\AW.LIB' contains
> invalid OMF record, type 0x21
>
>Thanks for the advice Edward and Faber (no, it isn't fixed :( but the
>idiots introduction to C++ was very helpful, unlike the manuals)
>

edward sumerfield

Jan 11, 1999, 8:02pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Fungus, so now you understand that you can not use the aw.lib file supplied
by COF because they use VC++. Instead have to use the aw.dll file file
they release which any linker can use. Walter is referring to a tool supplied
with the Borland compiler that generates a .lib file that you can link
into your bot that will automatically load the aw.dll file.
<p>&nbsp;&nbsp;&nbsp; aw.dll + impdef = Funguses.lib
<br>&nbsp;&nbsp;&nbsp; Funguses.lib + bot.o = bot.exe
<br>&nbsp;&nbsp;&nbsp; bot.exe + aw.dll = running robot.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* The aw.dll will have to be in your PATH for it to run */
<p>There are a lot of posts in the past abount using Borland C++ with the
aw.dll. I think someone actually released the new borland aw.lib file for
the latest sdk. Can't remember the author. Take a look at the history.
[View Quote]

fungus

Jan 11, 1999, 8:48pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
Hmm, okay. I've rebuilt the dll to give me a new aw.lib. however it doesn't
change the error messages I get when I try to build.
<p>Fungus.exe
<br>&nbsp;&nbsp;&nbsp; |________bot.obj (compilation of bot.ccp linked
to aw.h)
<br>&nbsp;&nbsp;&nbsp; |
<br>&nbsp;&nbsp;&nbsp; |________aw.lib (BC++ version)
<p>Info :Building...
<br>Info :Linking D:\bots\aw.dll
<br>Info :Transferring to C:\BC5\BIN\implib.exe at C:\WINDOWS\TEMP\RSP0.$$$
<br>Info :Compiling D:\bots\bot.cpp
<br>Warn :&nbsp; bot.cpp(19,11):Possibly incorrect assignment
<br><b><font color="#FF0000">// these appear when bot.ccp is compiled and
refer to all the if {rc = aw_init (AW_BUILD) and similar commands in the
sourcecode.</font></b>
<br>Warn :&nbsp; bot.cpp(28,11):Possibly incorrect assignment
<br>Warn :&nbsp; bot.cpp(38,11):Possibly incorrect assignment
<br>Warn :&nbsp; bot.cpp(44,11):Possibly incorrect assignment
<br>Warn :&nbsp; bot.cpp(53,11):Possibly incorrect assignment
<br>Info :Linking D:\bots\bot.exe
<br>Error:&nbsp; Error: Unresolved external '_aw_init' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_event_set' referenced
from D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_create' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_string_set' referenced
from D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_login' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_enter' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_int_set' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_state_change' referenced
from D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_wait' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_destroy' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_term' referenced from
D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_say' referenced from D:\BOTS\BOT.OBJ
<br>Error:&nbsp; Error: Unresolved external '_aw_string' referenced from
D:\BOTS\BOT.OBJ
<br>&nbsp;
</body>
</html>

walter knupe

Jan 12, 1999, 12:05am
This is a multi-part message in MIME format.

------=_NextPart_000_0081_01BE3DD8.6958A540
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

The warnigns appear because you are compiling a c sample source as a cpp =
programm. C++ is much more strict and generates more warnings or errors =
usually.

for the missing functions it still really looks like no aw.lib is linked =
to you project at all... i have no other explanation...

Walter

Fungus schrieb in Nachricht <369A7FB3.B1B1901E at hotmail.com>...
Hmm, okay. I've rebuilt the dll to give me a new aw.lib. however it =
doesn't change the error messages I get when I try to build.=20
Fungus.exe=20
|________bot.obj (compilation of bot.ccp linked to aw.h)=20
|=20
|________aw.lib (BC++ version)=20

Info :Building...=20
Info :Linking D:\bots\aw.dll=20
Info :Transferring to C:\BC5\BIN\implib.exe =
at C:\WINDOWS\TEMP\RSP0.$$$=20
Info :Compiling D:\bots\bot.cpp=20
Warn : bot.cpp(19,11):Possibly incorrect assignment=20
// these appear when bot.ccp is compiled and refer to all the if {rc =
=3D aw_init (AW_BUILD) and similar commands in the sourcecode.=20
Warn : bot.cpp(28,11):Possibly incorrect assignment=20
Warn : bot.cpp(38,11):Possibly incorrect assignment=20
Warn : bot.cpp(44,11):Possibly incorrect assignment=20
Warn : bot.cpp(53,11):Possibly incorrect assignment=20
Info :Linking D:\bots\bot.exe=20
Error: Error: Unresolved external '_aw_init' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_event_set' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_create' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_string_set' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_login' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_enter' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_int_set' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_state_change' referenced =
from D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_wait' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_destroy' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_term' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_say' referenced from =
D:\BOTS\BOT.OBJ=20
Error: Error: Unresolved external '_aw_string' referenced from =
D:\BOTS\BOT.OBJ=20
=20


------=_NextPart_000_0081_01BE3DD8.6958A540
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>

<META content=3Dtext/html;charset=3Diso-8859-1 =
http-equiv=3DContent-Type><!doctype html public "-//w3c//dtd html 4.0 =
transitional//en">
<META content=3D'"MSHTML 4.72.3511.1300"' name=3DGENERATOR>
</HEAD>
<BODY aLink=3D#990000 bgColor=3D#c0c0c0 link=3D#993366 text=3D#000000 =
vLink=3D#cc66cc>
<DIV><FONT color=3D#000000 face=3DArial size=3D2>The warnigns appear =
because you are=20
compiling a c sample source as a cpp programm. C++ is much more strict =
and=20
generates more warnings or errors usually.</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>for the missing functions it still =
really looks=20
like no aw.lib is linked to you project at all... i have no other=20
explanation...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Walter</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 solid 2px; MARGIN-LEFT: 5px; PADDING-LEFT: =
5px">
<DIV>Fungus<MI_WALLACE at HOTMAIL.COM> schrieb in Nachricht &lt;<A=20
=
href=3D"mailto:369A7FB3.B1B1901E at hotmail.com">369A7FB3.B1B1901E at hotmail.c=
om</A>&gt;...</DIV>Hmm,=20
okay. I've rebuilt the dll to give me a new aw.lib. however it =
doesn't=20
change the error messages I get when I try to build.=20
<P>Fungus.exe <BR>&nbsp;&nbsp;&nbsp; |________bot.obj (compilation =
of=20
bot.ccp linked to aw.h) <BR>&nbsp;&nbsp;&nbsp; | =
<BR>&nbsp;&nbsp;&nbsp;=20
|________aw.lib (BC++ version)=20
<P>Info :Building... <BR>Info :Linking D:\bots\aw.dll <BR>Info =
:Transferring=20
to C:\BC5\BIN\implib.exe at C:\WINDOWS\TEMP\RSP0.$$$ <BR>Info =
:Compiling=20
D:\bots\bot.cpp <BR>Warn :&nbsp; bot.cpp(19,11):Possibly incorrect=20
assignment <BR><B><FONT color=3D#ff0000>// these appear when bot.ccp =
is=20
compiled and refer to all the if {rc =3D aw_init (AW_BUILD) and =
similar=20
commands in the sourcecode.</FONT></B> <BR>Warn :&nbsp;=20
bot.cpp(28,11):Possibly incorrect assignment <BR>Warn :&nbsp;=20
bot.cpp(38,11):Possibly incorrect assignment <BR>Warn :&nbsp;=20
bot.cpp(44,11):Possibly incorrect assignment <BR>Warn :&nbsp;=20
bot.cpp(53,11):Possibly incorrect assignment <BR>Info :Linking=20
D:\bots\bot.exe <BR>Error:&nbsp; Error: Unresolved external =
'_aw_init'=20
referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved =
external=20
'_aw_event_set' referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; =
Error:=20
Unresolved external '_aw_create' referenced from D:\BOTS\BOT.OBJ=20
<BR>Error:&nbsp; Error: Unresolved external '_aw_string_set' =
referenced from=20
D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved external =
'_aw_login'=20
referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved =
external=20
'_aw_enter' referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error:=20
Unresolved external '_aw_int_set' referenced from D:\BOTS\BOT.OBJ=20
<BR>Error:&nbsp; Error: Unresolved external '_aw_state_change' =
referenced=20
from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved external =
'_aw_wait'=20
referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved =
external=20
'_aw_destroy' referenced from D:\BOTS\BOT.OBJ <BR>Error:&nbsp; =
Error:=20
Unresolved external '_aw_term' referenced from D:\BOTS\BOT.OBJ=20
<BR>Error:&nbsp; Error: Unresolved external '_aw_say' referenced =
from=20
D:\BOTS\BOT.OBJ <BR>Error:&nbsp; Error: Unresolved external =
'_aw_string'=20
referenced from D:\BOTS\BOT.OBJ <BR>&nbsp; =
</P></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_0081_01BE3DD8.6958A540--

=?iso-8859-1?q?=c6dificator?=

Jan 12, 1999, 1:50am
hi - Æd here...
I have tried doing just what Ed and Walter said with Implib.exe and get
a nasty error:

>implib.exe aw.lib aw.dll

Turbo Implib Version 2.0 Copyright (c) 1991, 1994 Borland International

Exception C0000005: Access violation
Module: IMPLIB.EXE Start address: 00410000
EAX=72AC3500 EBX=006A1358 ECX=FFFFFFFF EDX=006A2704 ESI=006A151C
EDI=72AC3561 EIP=00416757 EBP=0068FC84 ESP=0068FC80 EFL=00010246

I've tried this in DOS mode and same results, so it's not Windows 95 -
if the 2nd to last field in the error is correct - you need ESP to
figure this out! heh heh
Anyhow - if anyone has an idea on this one, or knows where to get the
Borland capable .lib file, please post!
(I've looked pretty hard through the threads, and saw some references to
these problems - but NO SOLUTIONS! why me?)

Thanks
- Ædificator


[View Quote] > Fungus, so now you understand that you can not use the aw.lib file
> supplied by COF because they use VC++. Instead have to use the aw.dll
> file file they release which any linker can use. Walter is referring
> to a tool supplied with the Borland compiler that generates a .lib
> file that you can link into your bot that will automatically load the
> aw.dll file.
>
> aw.dll + impdef = Funguses.lib
> Funguses.lib + bot.o = bot.exe
> bot.exe + aw.dll = running robot. /* The aw.dll will
> have to be in your PATH for it to run */
>
> There are a lot of posts in the past abount using Borland C++ with the
> aw.dll. I think someone actually released the new borland aw.lib file
> for the latest sdk. Can't remember the author. Take a look at the
> history.
>
[View Quote]

edward sumerfield

Jan 12, 1999, 12:10pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
I searched the borland site ( <A HREF="http://forumsearch.inprise.com:88/">http://forumsearch.inprise.com:88/</A> ) for
implib and found this.
<p><A HREF="http://forumsearch.inprise.com:88/search?NS-search-page=document&NS-rel-doc-name=/public/cppbuilder/commandlinetools/860&amp;amp;NS-query=implib&amp;amp;NS-search-type=NS-boolean-query&amp;amp;NS-file-key=/var/spool/news/spool/borland/public/cppbuilder/commandlinetools/860&amp;amp;NS-collection=cppbuildernews&amp;amp;NS-docs-matched=20&amp;amp;NS-doc-number=4">http://forumsearch.inprise.com:88/search?NS-search-page=document&amp;NS-rel-doc-name=/public/cppbuilder/commandlinetools/860&amp;amp;NS-query=implib&amp;amp;NS-search-type=NS-boolean-query&amp;amp;NS-file-key=/var/spool/news/spool/borland/public/cppbuilder/commandlinetools/860&amp;amp;NS-collection=cppbuildernews&amp;amp;NS-docs-matched=20&amp;amp;NS-doc-number=4</A>
<p>This is the relevant text. Seems the answer is a combination of impdef
and create a def file and implib to create the lib from the def and the
dll.
<p>One word of caution. When I did this for the GNU compiler I ended up
putting the full path name of the dll into the new lib file. This is not
a good thing from a portability perspective. So when you do the implib
make sure that the aw.dll is in the PATH or the current dir so that you
don't have to use a full path name.
<p>===================================================
<br>>Run impdef on the dll, like so:
<br>>
<br>> IMPDEF foo.def foo.dll
<br>>
<br>>This creates a file called foo.def.&nbsp; Now look at that file.&nbsp;
Since you've
<br>>already told me that it is a MSVC DLL, I can tell you what you will
see.
<br>>You will see some EXPORTS entries which look like:
<br>>
<br>>&nbsp;&nbsp;&nbsp; _Foo at 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=_Foo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
at 2
<br>>&nbsp;&nbsp;&nbsp; Bar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
at 1
<br>>
<br>>For all functions that look like Foo, they have __stdcall calling
<br>>convention, and all functions which look like Bar have __cdecl calling
<br>>convention.&nbsp; You can verify this with the headers, if you want...
<br>>
<br>>Now, to create a BCB import library, you will need to change these
lines to
<br>>look like:> Foo=_Foo at 4> _Bar=Bar
<br>>
<br>>Once you've edited the .DEF file, now run IMPLIB like so:
<br>>
<br>> IMPLIB foo.lib foo.def
<br>>
<br>>This will create a BCB import library.&nbsp; Now simply add the import
library
<br>>to your project, and away you go.&nbsp; Don't forget to put the DLL
in the
<br>>current directory or somewhere your system will look for DLLs.
<br>==============================================================
[View Quote]

fungus

Jan 12, 1999, 6:56pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
Getting sick of this yet? ;-)
<p>okay, this all sounds fine - makes sense and everything. But this is
what I get:
<p>when I
<br>> impdef fungus.def aw.dll
<p>I get a fungus.def that looks like
<p>LIBRARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AW.DLL
<p>EXPORTS
<br>&nbsp;&nbsp;&nbsp; __DebuggerHookData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
at 1
<br>&nbsp;
<p>that's it - no external commands referenced at all
<br>and according to edward I guess this should be changed to
<p>EXPORTS
<br>&nbsp;&nbsp;&nbsp; _DebuggerHookData=DebuggerHookData
<p>as in
<p>Bar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
at 1
<p>becomes
<p>_Bar=Bar
<br>&nbsp;
<p>however, whatever permutation of these suggestions I try the damn thing
still gives me the unresolved external errors. Thanks for the help btw,
edward + faber. Boy, I better get down to writing some pretty spectacular
bots to make all this worth it ;)
</body>
</html>

fungus

Jan 12, 1999, 7:41pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
lol, perhaps I should wait a while before posting (still looking for that
*unpost* button)
<p>anyway - I can get rid of all the error messages and get the program
to compile if I add in fungus.def lines like
<p>EXPORTS
<br>&nbsp;&nbsp;&nbsp; _aw_init&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
at 1
<br>&nbsp;&nbsp;&nbsp; _aw_blah_blah&nbsp;&nbsp;&nbsp; at 1
<p>so this must be kinda right? however I think get a " the bot.exe file
is linked to missing export AW>DLL:_aw_init. " error when starting the
program. I guess I'm still not impdef'ing properly to link in the _aw_init
and related events.
</body>
</html>

walter knupe

Jan 12, 1999, 8:58pm
This is a multi-part message in MIME format.

------=_NextPart_000_0033_01BE3E87.8216EC40
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

It puzzles me that the aw.dll appears to the impdef tool as if it didn't =
have any exports other then that debughookblah one...

But you cannot just invent entries... entries go by name OR by ordinal =
number (that odd number behind the at sign), and it seems that names are =
not sufficient. your ordinal numbers are invalid in the best case =
(resulting to the error you had) or are valid, but wrong function =
(resulting in a crash).

There were people here having success using impdef, so i don't know what =
might have rendered that method invalid again...

Roland, did you upgrade from VC5.0 to VC6.0 in the meantime ? that MIGHT =
explain things...

Walter

ps: as for your situation, you might want to try either that cygnus free =
c compiler (refer to Edward for that), or get VC6.0 for $100. It seems =
the AW sdk becomes a Visual C++ promoter :)


Fungus schrieb in Nachricht <369BC1A2.7FFCD003 at hotmail.com>...
lol, perhaps I should wait a while before posting (still looking for =
that *unpost* button)=20
anyway - I can get rid of all the error messages and get the program =
to compile if I add in fungus.def lines like=20

EXPORTS=20
_aw_init at 1=20
_aw_blah_blah at 1=20

so this must be kinda right? however I think get a " the bot.exe =
file is linked to missing export AW>DLL:_aw_init. " error when starting =
the program. I guess I'm still not impdef'ing properly to link in the =
_aw_init and related events.=20


------=_NextPart_000_0033_01BE3E87.8216EC40
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>

<META content=3Dtext/html;charset=3Diso-8859-1 =
http-equiv=3DContent-Type><!doctype html public "-//w3c//dtd html 4.0 =
transitional//en">
<META content=3D'"MSHTML 4.72.3511.1300"' name=3DGENERATOR>
</HEAD>
<BODY aLink=3D#990000 bgColor=3D#c0c0c0 link=3D#993366 text=3D#000000 =
vLink=3D#cc66cc>
<DIV><FONT face=3DArial size=3D2>It puzzles me that the aw.dll appears =
to the impdef=20
tool as if it didn't have any exports other then that debughookblah=20
one...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>But you cannot just invent entries... =
entries go by=20
name OR by ordinal number (that odd number behind the at sign), and it =
seems that=20
names are not sufficient. your ordinal numbers are invalid in the best =
case=20
(resulting to the error you had) or are valid, but wrong function =
(resulting in=20
a crash).</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>There were people here having success =
using impdef,=20
so i don't know what might have rendered that method invalid=20
again...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Roland, did you upgrade from VC5.0 to =
VC6.0 in the=20
meantime ? that MIGHT explain things...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Walter</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>ps: as for your situation, you might =
want to try=20
either that cygnus free c compiler (refer to Edward for that), or get =
VC6.0 for=20
$100. It seems the AW sdk becomes a Visual C++ promoter :)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 solid 2px; MARGIN-LEFT: 5px; PADDING-LEFT: =
5px">
<DIV>Fungus<MI_WALLACE at HOTMAIL.COM> schrieb in Nachricht &lt;<A=20
=
href=3D"mailto:369BC1A2.7FFCD003 at hotmail.com">369BC1A2.7FFCD003 at hotmail.c=
om</A>&gt;...</DIV>lol,=20
perhaps I should wait a while before posting (still looking for that =

*unpost* button)=20
<P>anyway - I can get rid of all the error messages and get the =
program to=20
compile if I add in fungus.def lines like=20
<P>EXPORTS <BR>&nbsp;&nbsp;&nbsp;=20
=
_aw_init&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;=20
at 1 <BR>&nbsp;&nbsp;&nbsp; _aw_blah_blah&nbsp;&nbsp;&nbsp; at 1=20
<P>so this must be kinda right? however I think get a &quot; the =
bot.exe=20
file is linked to missing export AW&gt;DLL:_aw_init. &quot; error =
when=20
starting the program. I guess I'm still not impdef'ing properly to =
link in=20
the _aw_init and related events. </P></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_0033_01BE3E87.8216EC40--

edward sumerfield

Jan 13, 1999, 1:08am
This is a multi-part message in MIME format.
--------------43184778E956B82384D4E271
Content-Type: multipart/alternative;
boundary="------------089D27851D2F9B66F0924C82"


--------------089D27851D2F9B66F0924C82
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I can't believe we can't get this working.

With the Cygnus stuff I use a program called impdef that creates the attached
file but you will notice that it does not have any ordinal or = stuff after
it. Then there is another program that takes this .def and the .dll and
creates a .lib file for me.

Maybe you can try your impdef with the attached awsdk.def file that I created
from aw.dll version 12.

[View Quote] > It puzzles me that the aw.dll appears to the impdef tool as if it didn't
> have any exports other then that debughookblah one... But you cannot just
> invent entries... entries go by name OR by ordinal number (that odd number
> behind the at sign), and it seems that names are not sufficient. your ordinal
> numbers are invalid in the best case (resulting to the error you had) or are
> valid, but wrong function (resulting in a crash). There were people here
> having success using impdef, so i don't know what might have rendered that
> method invalid again... Roland, did you upgrade from VC5.0 to VC6.0 in the
> meantime ? that MIGHT explain things... Walter ps: as for your situation,
> you might want to try either that cygnus free c compiler (refer to Edward
> for that), or get VC6.0 for $100. It seems the AW sdk becomes a Visual C++
> promoter :)
>
> Fungus schrieb in Nachricht <369BC1A2.7FFCD003 at hotmail.com>...lol,
> perhaps I should wait a while before posting (still looking for
> that *unpost* button)
>
> anyway - I can get rid of all the error messages and get the
> program to compile if I add in fungus.def lines like
>
> EXPORTS
> _aw_init at 1
> _aw_blah_blah at 1
>
> so this must be kinda right? however I think get a " the bot.exe
> file is linked to missing export AW>DLL:_aw_init. " error when
> starting the program. I guess I'm still not impdef'ing properly to
> link in the _aw_init and related events.
>

--------------089D27851D2F9B66F0924C82
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
I can't believe we can't get this working.
<p>With the Cygnus stuff I use a program called impdef that creates the
attached file but you will notice that it does not have any ordinal or
= stuff after it. Then there is another program that takes this .def and
the .dll and creates a .lib file for me.
<p>Maybe you can try your impdef with the attached awsdk.def file that
I created from aw.dll version 12.
[View Quote] </body>
</html>

--------------089D27851D2F9B66F0924C82--

--------------43184778E956B82384D4E271
Content-Type: text/plain; charset=us-ascii;
name="awsdk.def"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="awsdk.def"

EXPORTS
aw_init
aw_term
aw_create
aw_destroy
aw_login
aw_wait
aw_int
aw_int_set
aw_string
aw_string_set
aw_event
aw_event_set
aw_callback
aw_callback_set
aw_instance
aw_instance_set
aw_enter
aw_state_change
aw_say
aw_whisper
aw_object_add
aw_object_change
aw_object_delete
aw_query
aw_random
aw_license_attributes
aw_license_add
aw_license_change
aw_license_delete
aw_license_next
aw_license_previous
aw_bool
aw_bool_set
aw_citizen_attributes_by_name
aw_citizen_attributes_by_number
aw_citizen_add
aw_citizen_change
aw_citizen_delete
aw_citizen_next
aw_citizen_previous
aw_session
aw_world_list
aw_create_resolved
aw_world_attributes_change
aw_universe_attributes_change
aw_world_eject
aw_exit
aw_universe_ejection_add
aw_sector_from_cell


--------------43184778E956B82384D4E271--

=?iso-8859-1?q?=c6dificator?=

Jan 13, 1999, 2:25am
--------------CA8AA77DDF495416659EB0D2
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Well, sadly enough, Impdef causes the same Access Violation error
message. Perhaps my programs are just too old to handle the newest form
of VC++ DLL. (I am using Borland C++ 4.52) Most likely the problem.

Although there is better news! Using the aw.def file from you in the
form:

EXPORTS
aw_init
aw_term
aw_create
aw_destroy
etc...

I modified it to have the following redefinition's:

EXPORTS
_aw_init=aw_init
_aw_term=aw_term
_aw_create=aw_create
_aw_destroy=aw_destroy
etc...

I took this aw.def and implib'd it to aw.lib. Adding this lib to my
project allowed a successful compile and a program that runs! The only
bad thing is, I'm sure this will change with every revision of the sdk!
:(

Perhaps (if Roland is reading this post) a copy of the aw.def be
included in any future releases of the SDK? purdy-please?

But, Edward, thanks very much for your help! It is much appreciated!
-Ædificator

(by the way - the link you included doesn't work for me...did this have
any mention of the Access Violation error? - I did find, however, a
reference of someone getting sent newer copies of implib and impdef. I
think I'll be sending an e-mail to Borland...)

[View Quote] > I searched the borland site ( http://forumsearch.inprise.com:88/ ) for
> implib and found this.
>
> http://forumsearch.inp
> ise.com:88/search?NS-search-page=document&NS-rel-doc-name=/public/cppbuilder/commandlinetools/860&amp;NS-query=implib&amp;NS-search-type=NS-boolean-query&amp;NS-file-key=/var/spool/news/spool/borland/public/cppbuilder/commandlinetools/860&amp;NS-collection=cppbuildernews&amp;NS-docs-matched=20&amp;NS-doc-number=4
>
> This is the relevant text. Seems the answer is a combination of impdef
> and create a def file and implib to create the lib from the def and
> the dll.
>
> One word of caution. When I did this for the GNU compiler I ended up
> putting the full path name of the dll into the new lib file. This is
> not a good thing from a portability perspective. So when you do the
> implib make sure that the aw.dll is in the PATH or the current dir so
> that you don't have to use a full path name.
>
> ===================================================
> you've
> see.
> calling
> lines to
> library
>
> ==============================================================
>
[View Quote] --------------CA8AA77DDF495416659EB0D2
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Well, sadly enough, Impdef causes the same Access Violation error message.&nbsp;
Perhaps my programs are just too old to handle the newest form of VC++
DLL. (I am using Borland C++ 4.52)&nbsp; Most likely the problem.
<p>Although there is better news!&nbsp; Using the aw.def file from you
in the form:
<p>EXPORTS
<br>aw_init
<br>aw_term
<br>aw_create
<br>aw_destroy
<br>etc...
<p>I modified it to have the following redefinition's:
<p>EXPORTS
<br>_aw_init=aw_init
<br>_aw_term=aw_term
<br>_aw_create=aw_create
<br>_aw_destroy=aw_destroy
<br>etc...
<p>I took this aw.def and implib'd it to aw.lib.&nbsp; Adding this lib
to my project allowed a successful compile and a program that runs!&nbsp;
The only bad thing is, I'm sure this will change with every revision of
the sdk!&nbsp; :(
<p>Perhaps (if Roland is reading this post) a copy of the aw.def be included
in any future releases of the SDK?&nbsp; purdy-please?
<p>But, Edward, thanks very much for your help!&nbsp; It is much appreciated!
<br>-&AElig;dificator
<p>(by the way - the link you included doesn't work for me...did this have
any mention of the Access Violation error? - I did find, however, a reference
of someone getting sent newer copies of implib and impdef.&nbsp; I think
I'll be sending an e-mail to Borland...)
[View Quote] --------------CA8AA77DDF495416659EB0D2--

edward sumerfield

Jan 13, 1999, 3:35am
This is a multi-part message in MIME format.
--------------7EA5FBDA384DA363D6944B6A
Content-Type: multipart/alternative;
boundary="------------D334AC9533566F3ED5F28734"


--------------D334AC9533566F3ED5F28734
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Well I am glad it worked for you.

I attached the .cpp and .exe for my impdef so that you can recreate the .def
file each time. It only runs under DOS and prints the output to the screen so
you have to redirect the output to a file.

impdef aw.dll > awsdk.def

My apologies to the original author. I can't remember where I got it from.
Somewhere under the free downloads at ww.cygnus.com.

Good luck.

[View Quote] > Well, sadly enough, Impdef causes the same Access Violation error message.
> Perhaps my programs are just too old to handle the newest form of VC++ DLL.
> (I am using Borland C++ 4.52) Most likely the problem.
>
> Although there is better news! Using the aw.def file from you in the form:
>
> EXPORTS
> aw_init
> aw_term
> aw_create
> aw_destroy
> etc...
>
> I modified it to have the following redefinition's:
>
> EXPORTS
> _aw_init=aw_init
> _aw_term=aw_term
> _aw_create=aw_create
> _aw_destroy=aw_destroy
> etc...
>
> I took this aw.def and implib'd it to aw.lib. Adding this lib to my project
> allowed a successful compile and a program that runs! The only bad thing
> is, I'm sure this will change with every revision of the sdk! :(
>
> Perhaps (if Roland is reading this post) a copy of the aw.def be included in
> any future releases of the SDK? purdy-please?
>
> But, Edward, thanks very much for your help! It is much appreciated!
> -Ædificator
>
> (by the way - the link you included doesn't work for me...did this have any
> mention of the Access Violation error? - I did find, however, a reference of
> someone getting sent newer copies of implib and impdef. I think I'll be
> sending an e-mail to Borland...)
>
[View Quote] --------------D334AC9533566F3ED5F28734
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Well I am glad it worked for you.
<p>I attached the .cpp and .exe for my impdef so that you can recreate
the .def file each time. It only runs under DOS and prints the output to
the screen so you have to redirect the output to a file.
<p>&nbsp;&nbsp;&nbsp; impdef aw.dll > awsdk.def
<p>My apologies to the original author. I can't remember where I got it
from. Somewhere under the free downloads at ww.cygnus.com.
<p>Good luck.
[View Quote] --------------D334AC9533566F3ED5F28734--

--------------7EA5FBDA384DA363D6944B6A
Content-Type: application/x-unknown-content-type-WinZip;
name="impdef.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="impdef.zip"

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
eGVQSwUGAAAAAAIAAgBwAAAA/hoAAAAA
--------------7EA5FBDA384DA363D6944B6A--

walter knupe

Jan 13, 1999, 5:11pm
This is a multi-part message in MIME format.

------=_NextPart_000_00B8_01BE3F30.EC80D9C0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Since Roland uses Visual C++ 5.0, he probably has no .def file to =
include. They do those things different these days *smile*

Walter

=C6dificator schrieb in Nachricht =
<369C202E.837297A0 at geocities.com>...
Perhaps (if Roland is reading this post) a copy of the aw.def be =
included in any future releases of the SDK? purdy-please?=20



------=_NextPart_000_00B8_01BE3F30.EC80D9C0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>

<META content=3Dtext/html;charset=3Diso-8859-1 =
http-equiv=3DContent-Type><!doctype html public "-//w3c//dtd html 4.0 =
transitional//en">
<META content=3D'"MSHTML 4.72.3511.1300"' name=3DGENERATOR>
</HEAD>
<BODY bgColor=3D#b8b8b8>
<DIV><FONT color=3D#000000 face=3DArial><FONT size=3D3>Since Roland uses =
Visual C++=20
5.0, he probably has no .def file to include. They do those things =
different=20
these days *smile*</FONT></FONT><FONT size=3D3></FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial><FONT =
size=3D3></FONT></FONT><FONT=20
size=3D3></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial><FONT size=3D3>Walter</FONT></FONT><FONT=20
size=3D3></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 solid 2px; MARGIN-LEFT: 5px; PADDING-LEFT: =
5px">
<DIV>&AElig;dificator<AEDIFICATOR~NOSPAM! at GEOCITIES.COM> schrieb in=20
Nachricht &lt;<A=20
=
href=3D"mailto:369C202E.837297A0 at geocities.com">369C202E.837297A0 at geociti=
es.com</A>&gt;...</DIV>Perhaps=20
(if Roland is reading this post) a copy of the aw.def be included in =
any=20
future releases of the SDK?&nbsp; purdy-please?=20
<P>&nbsp;</P></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_00B8_01BE3F30.EC80D9C0--

=?iso-8859-1?q?=c6dificator?=

Jan 14, 1999, 3:02am
That program will do magic! When I get a chance I'll code it to
redirect output to a file in the proper format for Borland and post
it...
Thanks again!
- Ædificator

[View Quote] > Well I am glad it worked for you.
>
> I attached the .cpp and .exe for my impdef so that you can recreate
> the .def file each time. It only runs under DOS and prints the output
> to the screen so you have to redirect the output to a file.
>
> impdef aw.dll > awsdk.def
>
> My apologies to the original author. I can't remember where I got it
> from. Somewhere under the free downloads at ww.cygnus.com.
>
> Good luck.

andras sarkozy

Jan 14, 1999, 6:22am
--------------D822306FB8180F1A278CB97B
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

There are no need for the def file if you are running under Borland CBuilder 3 - at least I don't have one :o)

[View Quote] > Since Roland uses Visual C++ 5.0, he probably has no .def file to include. They do those things different these days *smile* Walter
>
> Ædificator schrieb in Nachricht <369C202E.837297A0 at geocities.com>...Perhaps (if Roland is reading this post) a copy of the aw.def be included in any future releases of the SDK? purdy-please?
>
>
>

--------------D822306FB8180F1A278CB97B
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body bgcolor="#B8B8B8">
There are no need for the def file if you are running under Borland CBuilder
3 - at least I don't have one :o)
[View Quote] </body>
</html>

--------------D822306FB8180F1A278CB97B--

fungus

Jan 16, 1999, 1:58pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
<i>Hmm, unfortunately this trick doesnt seem to work with Bordland C++
5.0</i><i></i>
<p><i>the program will compile, but I get an error still complaining that
my exe is linked to missing export aw.dll:_aw_init</i><i></i>
<p><i>This is getting a bit tenuous now... I'm compiling as a win32 console
application, which according to borland accepts EXPORTS definitions so
that should be hunky dorey..... And I've tried all of the logical permutations
of _aw_init=aw_init, capitals, arrangement etc.</i><i></i>
<p><i>Perhaps someone could mail me a complete awBC++.lib file (just to
make sure it's not me being dumb emough to have miss-compiled the def file
in some way). Failing that the only thing I can think of is using the __export
command explicity in every line of the bot.c that calls an external function.
D'ya reckon that's worth a shot?</i><i></i>
[View Quote]

fungus

Jan 23, 1999, 2:09pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<body text="#000000" bgcolor="#C0C0C0" link="#993366" vlink="#CC66CC" alink="#990000">
Cool and Froody - thanks AEdificator :-)
<p>the def file worked just fine : trick was that it didnt require the
LIBRARY&nbsp; aw.lib line what I had at the top of my version of aw.def.
<p>Thanks for your help you two :-)
</body>
</html>

tony mcgrath

Jan 27, 1999, 2:19pm
The real problem here is the fact that the Borland compilers prepend a "_"
to external identifiers
and the aw.dll exports its entry points without a prepended "_", which means
that the Borland
linker cannot find the function references. The redefinition of these entry
points using the DEF
file is one solution that will probably work with most Borland compilers.

There is another solution which avoids the whole naming problem which uses
the Windows
API LoadLibrary/GetProcAddress mechanism to load the addresses directly out
of the AW.DLL
file at run-time. This does work (I have used it in a C++Builder 3 component
that implements
the current SDK) and does not rely on having to update the DEF files if the
SDK changes.

Here is a copy of some C code that will do the job. It requires that you
redefine the SDK header
file to replace the API functions with the following definitions.

/* Modified aw.h for use with LoadLibrary/GetProcAddress */

#define AW_MAX_ATTRIBUTE_LENGTH 255
#define AW_BUILD 12

#ifdef __cplusplus
extern "C" {
#endif

/*--------------------------------------------------------------------------
---
a t t r i b u t e s
----------------------------------------------------------------------------
-*/

typedef enum {
AW_LOGIN_NAME,
AW_LOGIN_PASSWORD,
AW_LOGIN_OWNER,
AW_LOGIN_PRIVILEGE_PASSWORD,
AW_LOGIN_PRIVILEGE_NUMBER,
AW_LOGIN_PRIVILEGE_NAME,
AW_LOGIN_PRIVACY,
AW_LOGIN_APPLICATION,
AW_LOGIN_EMAIL, /* not used by the SDK */
AW_UNIVERSE_BROWSER_MINIMUM,
AW_UNIVERSE_BROWSER_RELEASE,
AW_UNIVERSE_BROWSER_BETA,
AW_UNIVERSE_WORLD_MINIMUM,
AW_UNIVERSE_WORLD_START,
AW_UNIVERSE_REGISTRATION_REQUIRED,
AW_UNIVERSE_BUILD_NUMBER,
AW_UNIVERSE_REGISTRATION_CHARGE,
AW_UNIVERSE_RENEWAL_CHARGE,
AW_CITIZEN_NUMBER,
AW_CITIZEN_NAME,
AW_CITIZEN_PASSWORD,
AW_CITIZEN_EMAIL,
AW_CITIZEN_TIME_LEFT,
AW_CITIZEN_PRIVILEGE_PASSWORD,
AW_CITIZEN_IMMIGRATION_TIME,
AW_CITIZEN_EXPIRATION_TIME,
AW_CITIZEN_BETA,
AW_CITIZEN_LAST_LOGIN,
AW_CITIZEN_BOT_LIMIT,
AW_WORLD_NAME,
AW_WORLD_TITLE,
AW_WORLD_BACKDROP,
AW_WORLD_GROUND,
AW_WORLD_OBJECT_PATH,
AW_WORLD_OBJECT_REFRESH,
AW_WORLD_BUILD_RIGHT,
AW_WORLD_EMINENT_DOMAIN_RIGHT,
AW_WORLD_ENTER_RIGHT,
AW_WORLD_SPECIAL_OBJECTS_RIGHT,
AW_WORLD_BACKDROP_RED,
AW_WORLD_BACKDROP_GREEN,
AW_WORLD_BACKDROP_BLUE,
AW_WORLD_CARETAKER_CAPABILITY,
AW_WORLD_RESTRICTED_RADIUS,
AW_WORLD_PUBLIC_SPEAKER_CAPABILITY,
AW_WORLD_PUBLIC_SPEAKER_RIGHT,
AW_WORLD_CREATION_TIMESTAMP,
AW_WORLD_HOME_PAGE,
AW_WORLD_BUILD_NUMBER,
AW_WORLD_OBJECT_PASSWORD,
AW_WORLD_DISABLE_CREATE_URL,
AW_WORLD_RATING,
AW_WORLD_WELCOME_MESSAGE,
AW_WORLD_EJECT_RIGHT,
AW_WORLD_EJECT_CAPABILITY,
AW_WORLD_CELL_LIMIT,
AW_WORLD_BUILD_CAPABILITY,
AW_WORLD_ALLOW_PASSTHRU,
AW_WORLD_ALLOW_FLYING,
AW_WORLD_ALLOW_TELEPORT,
AW_WORLD_AVATARS_IN_SCENE,
AW_WORLD_ALLOW_OBJECT_SELECT,
AW_WORLD_BOTS_RIGHT,
AW_WORLD_SPEAK_CAPABILITY,
AW_WORLD_SPEAK_RIGHT,
AW_MY_X,
AW_MY_Y,
AW_MY_Z,
AW_MY_YAW,
AW_MY_TYPE,
AW_MY_GESTURE,
AW_AVATAR_SESSION,
AW_AVATAR_NAME,
AW_AVATAR_X,
AW_AVATAR_Y,
AW_AVATAR_Z,
AW_AVATAR_YAW,
AW_AVATAR_TYPE,
AW_AVATAR_GESTURE,
AW_CHAT_SESSION,
AW_CHAT_MESSAGE,
AW_CELL_X,
AW_CELL_Z,
AW_CELL_SEQUENCE,
AW_CELL_SIZE,
AW_OBJECT_NUMBER,
AW_OBJECT_X,
AW_OBJECT_Y,
AW_OBJECT_Z,
AW_OBJECT_YAW,
AW_OBJECT_MODEL,
AW_OBJECT_DESCRIPTION,
AW_OBJECT_ACTION,
AW_OBJECT_OLD_NUMBER,
AW_OBJECT_OLD_X,
AW_OBJECT_OLD_Z,
AW_OBJECT_OWNER,
AW_OBJECT_SESSION,
AW_OBJECT_BUILD_TIMESTAMP,
AW_QUERY_COMPLETE,
AW_CHAT_TYPE,
AW_LICENSE_NAME,
AW_LICENSE_PASSWORD,
AW_LICENSE_USERS,
AW_LICENSE_RANGE,
AW_LICENSE_EMAIL,
AW_LICENSE_COMMENT,
AW_LICENSE_CREATION_TIME,
AW_LICENSE_EXPIRATION_TIME,
AW_LICENSE_LAST_START,
AW_WORLDLIST_NAME,
AW_WORLDLIST_STATUS,
AW_WORLDLIST_USERS,
AW_EJECT_SESSION,
AW_EJECT_DURATION,
AW_EJECTION_ADDRESS,
AW_EJECTION_EXPIRATION,
AW_DISCONNECT_REASON,
AW_FILE_NAME,
AW_FILE_RECIPIENT,
AW_FILE_SENDER,
AW_FILE_SENDER_NAME,
AW_FILE_SESSION,
AW_FILE_ADDRESS,
AW_FILE_PORT,

/* attributes below are not used by the SDK */

AW_CONTACT_NUMBER,
AW_CONTACT_STATUS,
AW_CONTACT_NAME,
AW_CONTACT_WORLD,
AW_CONTACT_MORE,
AW_TELEGRAM_TO,
AW_TELEGRAM_FROM,
AW_TELEGRAM_TEXT,
AW_TELEGRAM_SENT,
AW_TELEGRAM_MORE,
AW_JOIN_NAME,
AW_JOIN_CITIZEN,
AW_JOIN_WORLD,
AW_JOIN_X,
AW_JOIN_Y,
AW_JOIN_Z,
AW_JOIN_YAW,
AW_REGISTER_CC_NAME,
AW_REGISTER_CC_NUMBER,
AW_REGISTER_CC_MONTH,
AW_REGISTER_CC_YEAR,
AW_REGISTER_ADDRESS,
AW_REGISTER_CITY,
AW_REGISTER_STATE,
AW_REGISTER_ZIP,
AW_REGISTER_PHONE_NUMBER,
AW_REGISTER_BUSINESS_NAME,
AW_REGISTER_VENDOR,
AW_REGISTER_RESULT,
AW_MAX_ATTRIBUTE
} AW_ATTRIBUTE;

typedef enum {
AW_EVENT_AVATAR_ADD,
AW_EVENT_AVATAR_CHANGE,
AW_EVENT_AVATAR_DELETE,
AW_EVENT_CELL_BEGIN,
AW_EVENT_CELL_OBJECT,
AW_EVENT_CELL_END,
AW_EVENT_CHAT,
AW_EVENT_OBJECT_ADD,
AW_EVENT_OBJECT_DELETE,
AW_EVENT_UNIVERSE_ATTRIBUTES,
AW_EVENT_WORLD_ATTRIBUTES,
AW_EVENT_WORLD_INFO,
AW_EVENT_WORLD_DISCONNECT,
AW_EVENT_SEND_FILE,
AW_EVENT_CONTACT_STATE,
AW_EVENT_TELEGRAM,
AW_EVENT_JOIN,
AW_MAX_EVENT
} AW_EVENT_ATTRIBUTE;

typedef enum {
AW_CALLBACK_LOGIN,
AW_CALLBACK_ENTER,
AW_CALLBACK_OBJECT_RESULT,
AW_CALLBACK_LICENSE_ATTRIBUTES,
AW_CALLBACK_LICENSE_RESULT,
AW_CALLBACK_CITIZEN_ATTRIBUTES,
AW_CALLBACK_CITIZEN_RESULT,
AW_CALLBACK_QUERY,
AW_CALLBACK_WORLD_LIST,
AW_CALLBACK_SEND_FILE,
AW_CALLBACK_JOIN,
AW_CALLBACK_PASSWORD_SEND,
AW_CALLBACK_IMMIGRATE,
AW_CALLBACK_REGISTER,
AW_MAX_CALLBACK
} AW_CALLBACK;

typedef enum {
AW_CHAT_SAID,
AW_CHAT_BROADCAST,
AW_CHAT_WHISPER,
} AW_CHAT_TYPES;

typedef enum {
AW_CONTACT_OFFLINE,
AW_CONTACT_ONLINE,
AW_CONTACT_NOT_A_CITIZEN
} AW_CONTACT_STATES;

typedef enum {
AW_WORLDSTATUS_UNKNOWN,
AW_WORLDSTATUS_PUBLIC,
AW_WORLDSTATUS_PRIVATE
} AW_WORLD_STATES;

extern int __cdecl (*aw_init) (int build);
extern void __cdecl (*aw_term) (void);
extern int __cdecl (*aw_create) (const char* domain, int port, void**
instance);
extern int __cdecl (*aw_create_resolved) (unsigned long address, int port,
void** instance);
extern int __cdecl (*aw_destroy) (void);
extern void* __cdecl (*aw_instance) (void);
extern int __cdecl (*aw_instance_set) (void *instance);
extern int __cdecl (*aw_login) (void);
extern int __cdecl (*aw_wait) (int milliseconds);
extern int __cdecl (*aw_int) (AW_ATTRIBUTE a);
extern int __cdecl (*aw_int_set) (AW_ATTRIBUTE a, int value);
extern char* __cdecl (*aw_string) (AW_ATTRIBUTE a);
extern int __cdecl (*aw_string_set) (AW_ATTRIBUTE a, const char *value);
extern int __cdecl (*aw_bool) (AW_ATTRIBUTE a);
extern int __cdecl (*aw_bool_set) (AW_ATTRIBUTE a, int value);
extern void __cdecl (*(*aw_callback) (AW_CALLBACK c)) (int rc);
extern int __cdecl (*aw_callback_set) (AW_CALLBACK c, void (*callback)
(int rc));
extern void __cdecl (*(*aw_event) (AW_EVENT_ATTRIBUTE a))(void);
extern int __cdecl (*aw_event_set) (AW_EVENT_ATTRIBUTE a, void (*handler)
(void));
extern int __cdecl (*aw_enter) (const char* world, int avatars);
extern int __cdecl (*aw_exit) (void);
extern int __cdecl (*aw_say) (const char* message);
extern int __cdecl (*aw_whisper) (int session_id, const char* message);
extern int __cdecl (*aw_state_change) (void);
extern int __cdecl (*aw_citizen_attributes_by_name) (const char* name);
extern int __cdecl (*aw_citizen_attributes_by_number) (int citizen);
extern int __cdecl (*aw_citizen_add) (void);
extern int __cdecl (*aw_citizen_change) (void);
extern int __cdecl (*aw_citizen_delete) (int citizen);
extern int __cdecl (*aw_citizen_next) (void);
extern int __cdecl (*aw_citizen_previous) (void);
extern int __cdecl (*aw_license_add) (void);
extern int __cdecl (*aw_license_attributes) (const char* name);
extern int __cdecl (*aw_license_change) (void);
extern int __cdecl (*aw_license_delete) (const char* name);
extern int __cdecl (*aw_license_next) (void);
extern int __cdecl (*aw_license_previous) (void);
extern int __cdecl (*aw_world_list) (void);
extern int __cdecl (*aw_object_add) (void);
extern int __cdecl (*aw_object_change) (void);
extern int __cdecl (*aw_object_delete) (void);
extern int __cdecl (*aw_query) (int x_sector, int z_sector, int
sequence[3][3]);
extern int __cdecl (*aw_random) (void);
extern int __cdecl (*aw_world_attributes_change) (void);
extern int __cdecl (*aw_universe_attributes_change) (void);
extern int __cdecl (*aw_session) (void);
extern int __cdecl (*aw_world_eject) (void);
extern int __cdecl (*aw_universe_ejection_add) (void);
extern int __cdecl (*aw_sector_from_cell) (int cell);

#ifdef __cplusplus
}
#endif

Then you will need to add some code to load the addresses from the AW.DLL at
run-time.
The following code will do this.

#ifdef __cplusplus
extern "C" {
#endif

int __cdecl (*aw_init) (int build);
void __cdecl (*aw_term) (void);
int __cdecl (*aw_create) (const char* domain, int port, void** instance);
int __cdecl (*aw_create_resolved) (unsigned long address, int port, void**
instance);
int __cdecl (*aw_destroy) (void);
void* __cdecl (*aw_instance) (void);
int __cdecl (*aw_instance_set) (void *instance);
int __cdecl (*aw_login) (void);
int __cdecl (*aw_wait) (int milliseconds);
int __cdecl (*aw_int) (AW_ATTRIBUTE a);
int __cdecl (*aw_int_set) (AW_ATTRIBUTE a, int value);
char* __cdecl (*aw_string) (AW_ATTRIBUTE a);
int __cdecl (*aw_string_set) (AW_ATTRIBUTE a, const char *value);
int __cdecl (*aw_bool) (AW_ATTRIBUTE a);
int __cdecl (*aw_bool_set) (AW_ATTRIBUTE a, int value);
void __cdecl (*(*aw_callback) (AW_CALLBACK c))(int rc);
int __cdecl (*aw_callback_set) (AW_CALLBACK c, void (*callback) (int rc));
void __cdecl (*(*aw_event) (AW_EVENT_ATTRIBUTE a))(void);
int __cdecl (*aw_event_set) (AW_EVENT_ATTRIBUTE a, void (*handler)
(void));
int __cdecl (*aw_enter) (const char* world, int avatars);
int __cdecl (*aw_exit) (void);
int __cdecl (*aw_say) (const char* message);
int __cdecl (*aw_whisper) (int session_id, const char* message);
int __cdecl (*aw_state_change) (void);
int __cdecl (*aw_citizen_attributes_by_name) (const char* name);
int __cdecl (*aw_citizen_attributes_by_number) (int citizen);
int __cdecl (*aw_citizen_add) (void);
int __cdecl (*aw_citizen_change) (void);
int __cdecl (*aw_citizen_delete) (int citizen);
int __cdecl (*aw_citizen_next) (void);
int __cdecl (*aw_citizen_previous) (void);
int __cdecl (*aw_license_add) (void);
int __cdecl (*aw_license_attributes) (const char* name);
int __cdecl (*aw_license_change) (void);
int __cdecl (*aw_license_delete) (const char* name);
int __cdecl (*aw_license_next) (void);
int __cdecl (*aw_license_previous) (void);
int __cdecl (*aw_world_list) (void);
int __cdecl (*aw_object_add) (void);
int __cdecl (*aw_object_change) (void);
int __cdecl (*aw_object_delete) (void);
int __cdecl (*aw_query) (int x_sector, int z_sector, int sequence[3][3]);
int __cdecl (*aw_random) (void);
int __cdecl (*aw_world_attributes_change) (void);
int __cdecl (*aw_universe_attributes_change) (void);
int __cdecl (*aw_session) (void);
int __cdecl (*aw_world_eject) (void);
int __cdecl (*aw_universe_ejection_add) (void);
int __cdecl (*aw_sector_from_cell) (int cell);

#ifdef __cplusplus
}
#endif

void
LoadAwDll(void)
{
HINSTANCE h;

h = LoadLibrary("AW.DLL");

aw_init = (int(*)(int)) GetProcAddress(h, "aw_init");
aw_term = (void(*)(void)) GetProcAddress(h, "aw_term");
aw_create = (int(*)(const char*, int, void**)) GetProcAddress(h,
"aw_create");
aw_create_resolved = (int(*)(unsigned long, int, void**))
GetProcAddress(h, "aw_create_resolved");
aw_destroy = (int(*)(void)) GetProcAddress(h, "aw_destroy");
aw_instance = (void*(*)(void)) GetProcAddress(h, "aw_instance");
aw_instance_set = (int(*)(void*)) GetProcAddress(h, "aw_instance_set");
aw_login = (int(*)(void)) GetProcAddress(h, "aw_login");
aw_wait = (int(*)(int)) GetProcAddress(h, "aw_wait");
aw_int = (int(*)(AW_ATTRIBUTE)) GetProcAddress(h, "aw_int");
aw_int_set = (int(*)(AW_ATTRIBUTE, int)) GetProcAddress(h,
"aw_int_set");
aw_string = (char*(*)(AW_ATTRIBUTE)) GetProcAddress(h, "aw_string");
aw_string_set = (int(*)(AW_ATTRIBUTE, const char*)) GetProcAddress(h,
"aw_string_set");
aw_bool = (int(*)(AW_ATTRIBUTE)) GetProcAddress(h, "aw_bool");
aw_bool_set = (int(*)(AW_ATTRIBUTE, int)) GetProcAddress(h,
"aw_bool_set");
aw_callback = (void(*(*)(AW_CALLBACK))(int)) GetProcAddress(h,
"aw_callback");
aw_callback_set = (int(*)(AW_CALLBACK, void(*)(int))) GetProcAddress(h,
"aw_callback_set");
aw_event = (void(*(*)(AW_EVENT_ATTRIBUTE))(void)) GetProcAddress(h,
"aw_event");
aw_event_set = (int(*)(AW_EVENT_ATTRIBUTE, void(*)(void)))
GetProcAddress(h, "aw_event_set");
aw_enter = (int(*)(const char*, int)) GetProcAddress(h, "aw_enter");
aw_exit = (int(*)(void)) GetProcAddress(h, "aw_exit");
aw_say = (int(*)(const char*)) GetProcAddress(h, "aw_say");
aw_whisper = (int(*)(int, const char*)) GetProcAddress(h, "aw_whisper");
aw_state_change = (int(*)(void)) GetProcAddress(h, "aw_state_change");
aw_citizen_attributes_by_name = (int(*)(const char*)) GetProcAddress(h,
"aw_citizen_attributes_by_name");
aw_citizen_attributes_by_number = (int(*)(int)) GetProcAddress(h,
"aw_citizen_attributes_by_number");
aw_citizen_add = (int(*)(void)) GetProcAddress(h, "aw_citizen_add");
aw_citizen_change = (int(*)(void)) GetProcAddress(h,
"aw_citizen_change");
aw_citizen_delete = (int(*)(int)) GetProcAddress(h,
"aw_citizen_delete");
aw_citizen_next = (int(*)(void)) GetProcAddress(h, "aw_citizen_next");
aw_citizen_previous = (int(*)(void)) GetProcAddress(h,
"aw_citizen_previous");
aw_license_add = (int(*)(void)) GetProcAddress(h, "aw_license_add");
aw_license_attributes = (int(*)(const char*)) GetProcAddress(h,
"aw_license_attributes");
aw_license_change = (int(*)(void)) GetProcAddress(h,
"aw_license_change");
aw_license_delete = (int(*)(const char*)) GetProcAddress(h,
"aw_license_delete");
aw_license_previous = (int(*)(void)) GetProcAddress(h,
"aw_license_previous");
aw_license_next = (int(*)(void)) GetProcAddress(h, "aw_license_next");
aw_world_list = (int(*)(void)) GetProcAddress(h, "aw_world_list");
aw_object_add = (int(*)(void)) GetProcAddress(h, "aw_object_add");
aw_object_change = (int(*)(void)) GetProcAddress(h, "aw_object_change");
aw_object_delete = (int(*)(void)) GetProcAddress(h, "aw_object_delete");
aw_query = (int(*)(int, int, int(*)[3])) GetProcAddress(h, "aw_query");
aw_random = (int(*)(void)) GetProcAddress(h, "aw_random");
aw_world_attributes_change = (int(*)(void)) GetProcAddress(h,
"aw_world_attributes_change");
aw_universe_attributes_change = (int(*)(void)) GetProcAddress(h,
"aw_universe_attributes_change");
aw_session = (int(*)(void)) GetProcAddress(h, "aw_session");
aw_world_eject = (int(*)(void)) GetProcAddress(h, "aw_world_eject");
aw_universe_ejection_add = (int(*)(void)) GetProcAddress(h,
"aw_universe_ejection_add");
aw_sector_from_cell = (int(*)(int)) GetProcAddress(h,
"aw_sector_from_cell");
}

Of course, this code doesn't have any error checking added. I leave that as
an exercise.
I hope this helps those who are in need ;-)

ToeKnee.
[View Quote] This is getting a bit tenuous now... I'm compiling as a win32 console
application, which according to borland accepts EXPORTS definitions so that
should be hunky dorey..... And I've tried all of the logical permutations of
_aw_init=aw_init, capitals, arrangement etc.

Perhaps someone could mail me a complete awBC++.lib file (just to make
sure it's not me being dumb emough to have miss-compiled the def file in
some way). Failing that the only thing I can think of is using the __export
command explicity in every line of the bot.c that calls an external
function. D'ya reckon that's worth a shot?

[View Quote] Well, sadly enough, Impdef causes the same Access Violation error
message. Perhaps my programs are just too old to handle the newest form of
VC++ DLL. (I am using Borland C++ 4.52) Most likely the problem.
Although there is better news! Using the aw.def file from you in
the form:

EXPORTS
aw_init
aw_term
aw_create
aw_destroy
etc...

I modified it to have the following redefinition's:

EXPORTS
_aw_init=aw_init
_aw_term=aw_term
_aw_create=aw_create
_aw_destroy=aw_destroy
etc...

I took this aw.def and implib'd it to aw.lib. Adding this lib to my
project allowed a successful compile and a program that runs! The only bad
thing is, I'm sure this will change with every revision of the sdk!

edward sumerfield

Jan 27, 1999, 3:35pm
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
I would have to disagree with you, Tony, about the maintenance problem
you are facing compared to using the def method.
<p>Using the def method you get complete automation of the DLL stub library
creation whereas with your method you have to manually create the stub
library and will have to check/change your code every time a new release
is delivered.
<p>I work with the GNU G++ compiler and, in the beginning, I used the manual
stub method that you are proposing. It did work but was a continual problem
to keep up to date and check after each release. Once I worked out how
to automate the stub creation for the GNU compiler life became much easier.
I now just type make and a stub library is created for me.
<p>Edward Sumerfield.
<br><A HREF="http://members.xoom.com/esumerfd/ActiveWorlds/AWCPP.htm">http://members.xoom.com/esumerfd/ActiveWorlds/AWCPP.htm</A>
[View Quote]

walter knupe

Jan 27, 1999, 5:05pm
I am surprised that Borland handles dll exported function names this way,
because usually the leading
underscore in dll exportet names (and in linker-level non-c++ function names
as well) is the calling convention.

Functions that use regular c calling convention have a leading underscore,
functions that use PASCAL calling convention have no leading underscore...
therefore a function prototype having the wrong calling convention declared
would lead to a linker unresolved external error instead of a program crash.

DLL exported function have by convention a PASCAL calling convention and
therefore no leading underscore. under rare conditions, such as variable arg
functions (wsprintf(const char *, ...) is such a function) must have c
calling convention, and are exportet using a leading underscore.

just FYI

Walter aka Faber

ps: calling conventions define the order of arguments on the stack
and the side (caller/callee) reponsible for cleaning up the stack
after argument usage / removal

Tony McGrath schrieb in Nachricht <36af3b8c.0 at homer>...
>The real problem here is the fact that the Borland compilers prepend a "_"
>to external identifiers
>and the aw.dll exports its entry points without a prepended "_", which
means
>that the Borland
>linker cannot find the function references. The redefinition of these entry
>points using the DEF
>file is one solution that will probably work with most Borland compilers.
>

canopus

Jan 27, 1999, 8:57pm
Don't know if it's relevant or not, but in linking Borland Delphi (Object
Pascal) to the aw.dll, there was a choice of five calling conventions (register,
pascal, cdecl, stdcall, and safecall). At first, stdcall was used, but it didn't
work; then cdecl (the regular c calling convention) was used, and it has
continued to work fine.

[View Quote] > I am surprised that Borland handles dll exported function names this way,
> because usually the leading
> underscore in dll exportet names (and in linker-level non-c++ function names
> as well) is the calling convention.
>
> Functions that use regular c calling convention have a leading underscore,
> functions that use PASCAL calling convention have no leading underscore...
> therefore a function prototype having the wrong calling convention declared
> would lead to a linker unresolved external error instead of a program crash.
>
> DLL exported function have by convention a PASCAL calling convention and
> therefore no leading underscore. under rare conditions, such as variable arg
> functions (wsprintf(const char *, ...) is such a function) must have c
> calling convention, and are exportet using a leading underscore.
>
> just FYI
>
> Walter aka Faber
>
> ps: calling conventions define the order of arguments on the stack
> and the side (caller/callee) reponsible for cleaning up the stack
> after argument usage / removal
>
> Tony McGrath schrieb in Nachricht <36af3b8c.0 at homer>...
> means

walter knupe

Jan 27, 1999, 9:18pm
Oh, that explains that the aw.dll exports functions using c calling
conventions and therefore those functions have leading underscores..

stdcall is somewhat close to pascal i think...


Walter aka Faber

Canopus schrieb in Nachricht <36AF99BC.3A6CEC58 at ix.netcom.com>...
>Don't know if it's relevant or not, but in linking Borland Delphi (Object
>Pascal) to the aw.dll, there was a choice of five calling conventions
(register,
>pascal, cdecl, stdcall, and safecall). At first, stdcall was used, but it
didn't
>work; then cdecl (the regular c calling convention) was used, and it has
>continued to work fine.
>
[View Quote]

1  |  
Awportals.com is a privately held community resource website dedicated to Active Worlds.
Copyright (c) Mark Randall 2006 - 2023. All Rights Reserved.
Awportals.com   ·   ProLibraries Live   ·   Twitter   ·   LinkedIn