I wrote a very short few lines of code under C7.00:
int addint(int x)
{
return x++;
}
Then after compiling it into the intlib.obj file I switched to VBDOS and entered the command:
link /information /q intlib.obj , , , vbdosqlb.lib and got the following result
Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.
Definitions File : LINK : warning L4045: name of output file is 'intlib.qlb'
**** PARSE DEFINITIONS FILE ****
**** PASS ONE ****
\lib\intlib.lib(intlib.cpp)
\lib\intlib.lib(intlib.cpp)
**** LIBRARY SEARCH ****
vbdosqlb.lib(..\rt\ulstart.asm)
vbdosqlb.lib(\mrt\common\fixups.ASM)
vbdosqlb.lib(..\rt\rtutil.asm)
vbdosqlb.lib(..\rt\rtmint1.asm)
vbdosqlb.lib(..\rt\ultort.asm)
vbdosqlb.lib(..\crt\crt0stub.asm)
vbdosqlb.lib(..\crt\execve.asm)
vbdosqlb.lib(..\rt\erbcproc.asm)
vbdosqlb.lib(..\rt\ulutil.asm)
vbdosqlb.lib(..\rt\error.asm)
vbdosqlb.lib(..\rt\rtmint3.asm)
vbdosqlb.lib(..\crt\freeheap.asm)
vbdosqlb.lib(..\rt\rtenexit.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: _STKHQQ : symbol defined more than once
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: __aaltstkovr : symbol defined more than once
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: __chkstk : symbol defined more than once
**** ASSIGN ADDRESSES ****
1 segment "_TEXT" class "CODE" length 33fH bytes
2 segment "_DATA" class "DATA" length 4aH bytes
3 segment "CONST" class "CONST" length 0H bytes
4 segment "_BSS" class "BSS" length 0H bytes
5 segment "XMSSEG" class "CODE" length ad5H bytes
6 segment "FAR_BSS" class "FAR_BSS" length 0H bytes
7 segment "FAR_DATA" class "FAR_DATA" length 0H bytes
8 segment "NULL" class "BEGDATA" length 42b0H bytes
9 segment "CDATA" class "DATA" length eH bytes
10 segment "XIQC" class "DATA" length 2H bytes
11 segment "XIB" class "DATA" length 0H bytes
12 segment "XI" class "DATA" length 0H bytes
13 segment "XIE" class "DATA" length 0H bytes
14 segment "XPB" class "DATA" length 0H bytes
15 segment "XP" class "DATA" length 0H bytes
16 segment "XPE" class "DATA" length 0H bytes
17 segment "XCB" class "DATA" length 0H bytes
18 segment "XC" class "DATA" length 0H bytes
19 segment "XCE" class "DATA" length 0H bytes
20 segment "XECIB" class "DATA" length 0H bytes
21 segment "XECI" class "DATA" length 0H bytes
22 segment "XECIE" class "DATA" length 0H bytes
23 segment "DBDATA" class "DATA" length eH bytes
24 segment "BC_SAB" class "BC_SEGS" length 0H bytes
25 segment "BC_SA" class "BC_SEGS" length 4H bytes
26 segment "XOB" class "BSS" length 0H bytes
27 segment "XO" class "BSS" length 0H bytes
28 segment "XOE" class "BSS" length 0H bytes
29 segment "NMALLOC" class "BC_VARS" length 2H bytes
30 segment "ENMALLOC" class "BC_VARS" length 2H bytes
31 segment "STACK" class "STACK" length 0H bytes
32 segment "C_ETEXT" class "ENDCODE" length 0H bytes
33 segment "_BSS" class "DATA" length 1eH bytes
**** PASS TWO ****
\lib\intlib.lib(intlib.cpp)
\lib\intlib.lib(intlib.cpp)
vbdosqlb.lib(..\rt\ulstart.asm)
vbdosqlb.lib(\mrt\common\fixups.ASM)
vbdosqlb.lib(..\rt\rtutil.asm)
vbdosqlb.lib(..\rt\rtmint1.asm)
vbdosqlb.lib(..\rt\ultort.asm)
vbdosqlb.lib(..\crt\crt0stub.asm)
vbdosqlb.lib(..\crt\execve.asm)
vbdosqlb.lib(..\rt\erbcproc.asm)
vbdosqlb.lib(..\rt\ulutil.asm)
vbdosqlb.lib(..\rt\error.asm)
vbdosqlb.lib(..\rt\rtmint3.asm)
vbdosqlb.lib(..\crt\freeheap.asm)
vbdosqlb.lib(..\rt\rtenexit.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm)
**** WRITING DOS EXECUTABLE ****
There were 6 errors detected
Who can tell me what is going on! Maybe I fundamentally haven't understood how BASIC calls C procedures?
int addint(int x)
{
return x++;
}
Then after compiling it into the intlib.obj file I switched to VBDOS and entered the command:
link /information /q intlib.obj , , , vbdosqlb.lib and got the following result
Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.
Definitions File : LINK : warning L4045: name of output file is 'intlib.qlb'
**** PARSE DEFINITIONS FILE ****
**** PASS ONE ****
\lib\intlib.lib(intlib.cpp)
\lib\intlib.lib(intlib.cpp)
**** LIBRARY SEARCH ****
vbdosqlb.lib(..\rt\ulstart.asm)
vbdosqlb.lib(\mrt\common\fixups.ASM)
vbdosqlb.lib(..\rt\rtutil.asm)
vbdosqlb.lib(..\rt\rtmint1.asm)
vbdosqlb.lib(..\rt\ultort.asm)
vbdosqlb.lib(..\crt\crt0stub.asm)
vbdosqlb.lib(..\crt\execve.asm)
vbdosqlb.lib(..\rt\erbcproc.asm)
vbdosqlb.lib(..\rt\ulutil.asm)
vbdosqlb.lib(..\rt\error.asm)
vbdosqlb.lib(..\rt\rtmint3.asm)
vbdosqlb.lib(..\crt\freeheap.asm)
vbdosqlb.lib(..\rt\rtenexit.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: _STKHQQ : symbol defined more than once
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: __aaltstkovr : symbol defined more than once
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm) : error L2025: __chkstk : symbol defined more than once
**** ASSIGN ADDRESSES ****
1 segment "_TEXT" class "CODE" length 33fH bytes
2 segment "_DATA" class "DATA" length 4aH bytes
3 segment "CONST" class "CONST" length 0H bytes
4 segment "_BSS" class "BSS" length 0H bytes
5 segment "XMSSEG" class "CODE" length ad5H bytes
6 segment "FAR_BSS" class "FAR_BSS" length 0H bytes
7 segment "FAR_DATA" class "FAR_DATA" length 0H bytes
8 segment "NULL" class "BEGDATA" length 42b0H bytes
9 segment "CDATA" class "DATA" length eH bytes
10 segment "XIQC" class "DATA" length 2H bytes
11 segment "XIB" class "DATA" length 0H bytes
12 segment "XI" class "DATA" length 0H bytes
13 segment "XIE" class "DATA" length 0H bytes
14 segment "XPB" class "DATA" length 0H bytes
15 segment "XP" class "DATA" length 0H bytes
16 segment "XPE" class "DATA" length 0H bytes
17 segment "XCB" class "DATA" length 0H bytes
18 segment "XC" class "DATA" length 0H bytes
19 segment "XCE" class "DATA" length 0H bytes
20 segment "XECIB" class "DATA" length 0H bytes
21 segment "XECI" class "DATA" length 0H bytes
22 segment "XECIE" class "DATA" length 0H bytes
23 segment "DBDATA" class "DATA" length eH bytes
24 segment "BC_SAB" class "BC_SEGS" length 0H bytes
25 segment "BC_SA" class "BC_SEGS" length 4H bytes
26 segment "XOB" class "BSS" length 0H bytes
27 segment "XO" class "BSS" length 0H bytes
28 segment "XOE" class "BSS" length 0H bytes
29 segment "NMALLOC" class "BC_VARS" length 2H bytes
30 segment "ENMALLOC" class "BC_VARS" length 2H bytes
31 segment "STACK" class "STACK" length 0H bytes
32 segment "C_ETEXT" class "ENDCODE" length 0H bytes
33 segment "_BSS" class "DATA" length 1eH bytes
**** PASS TWO ****
\lib\intlib.lib(intlib.cpp)
\lib\intlib.lib(intlib.cpp)
vbdosqlb.lib(..\rt\ulstart.asm)
vbdosqlb.lib(\mrt\common\fixups.ASM)
vbdosqlb.lib(..\rt\rtutil.asm)
vbdosqlb.lib(..\rt\rtmint1.asm)
vbdosqlb.lib(..\rt\ultort.asm)
vbdosqlb.lib(..\crt\crt0stub.asm)
vbdosqlb.lib(..\crt\execve.asm)
vbdosqlb.lib(..\rt\erbcproc.asm)
vbdosqlb.lib(..\rt\ulutil.asm)
vbdosqlb.lib(..\rt\error.asm)
vbdosqlb.lib(..\rt\rtmint3.asm)
vbdosqlb.lib(..\crt\freeheap.asm)
vbdosqlb.lib(..\rt\rtenexit.asm)
e:\dos\C700\LIB\SLIBCE.lib(chkstk.asm)
**** WRITING DOS EXECUTABLE ****
There were 6 errors detected
Who can tell me what is going on! Maybe I fundamentally haven't understood how BASIC calls C procedures?

