link.exe error message

If you have questions about any aspect of QBasic programming, or would like to help fellow programmers solve their problems, check out this board!

Moderators: Pete, Mods

Post Reply
flukiluke
Newbie
Posts: 8
Joined: Sun Nov 07, 2010 6:34 am

link.exe error message

Post by flukiluke »

I have been trying to make some libraries with assembly code. It assembles fine, and lib.exe work fine too. When I try to make a Quick-Library, however, link.exe always reports an "Unexpected end of file" error. Playing around, I also discovered that I get the same error when I select "Make Library.." from the IDE. Does anyone have any ideas?

Thanks in Advance,
Luke
User avatar
burger2227
Veteran
Posts: 2466
Joined: Mon Aug 21, 2006 12:40 am
Location: Pittsburgh, PA

Post by burger2227 »

Check the /Q and /QU options:

LINK.EXE. QB, PDS, VBDOS. THE SEGMENTED EXECUTABLE LINKER IS USED TO CREATE EXECUTABLE
FILES, QBASIC LIBRARIES, COMBINE OBJECT FILES AND STANDARD LIBRARY FILES INTO A SINGLE
EXECUTABLE OR DLL.

THE OUTPUT FILE FROM LINK IS NOT BOUND TO SPECIFIC MEMORY ADDRESSES. THUS, THE OPERATING
SYSTEM CAN LOAD AND EXECUTE THIS FILE AT ANY CONVENIENT ADDRESS. ACCEPTS OBJECT FILES
COMPILED OR ASSEMBLED FOR 8086/8088, 80286, OR 80386 COMPUTERS.

OBJECT FILES MUST BE IN THE RELOCATABLE OBJECT-MODULE FORMAT (OMF), WHICH IS BASED ON
THE INTEL 8086 OMF. THIS FORMAT IS PRODUCED BY ALL COMPILERS AND ASSEMBLERS. ALSO
ACCEPTS STANDARD LIBRARY FILES. THESE FILES ARE USED TO RESOLVE EXTERNAL REFERENCES
IN THE OBJECT FILES.

CAN PRODUCE MS-DOS EXECUTABLE FILES WITH UP TO 1MB. OF CODE AND DATA; FOR OS/2 AND
WINDOWS PROGRAMS, THE LIMIT IS 16 MEGABYTES. FOR OS/2, CAN PRODUCE DLLS IN ADDITION TO
EXECUTABLE FILES (.EXE). THE QBASIC 4.5 DISPLAYS THE VERSION 3.69, THE QBASIC EXTENDED
THE 5.10 AND BOTH VISUAL BASICS FOR MS-DOS THE 5.31.009.


USAGE:

LINK 'manual entries
LINK @<RESPONSE>
LINK <OBJS>, <EXEFILE>, <MAPFILE>, <LIBS>, <DEFFILE>


THE VALID OPTIONS CAN BE:

/? DISPLAYS AN ABBREVIATED HELP SCREEN (NOT FOR THE QBASIC 4.5)
/A[LIGNMENT]:SIZE SET THE .EXE ALIGNMENT (NOT FOR THE QBASIC 4.5)
/BA[TCH] RUN IN BATCH MODE

/BINARY '(ONLY FOR THE QBASIC 4.5)
/CO[DEVIEW] 'PREPARE FOR DEBUGGING
/CP[ARMAXALLOC]:NUMBER 'SET THE MAXIMUM ALLOCATION SPACE
/DO[SSEG] 'ORDER THE SEGMENTS

/DS[ALLOCATE] 'CONTROL THE DATA LOADING
/DY[NAMIC][:NUMBER] 'CHANGES THE LIMIT OF THE INTER-OVERLAY CALLS (ONLY FOR THE VISBASIC)
/E[XEPACK] 'PACK THE .EXE FILES
/F[ARCALLTRANSLATION] 'OPTIMIZE THE FAR CALLS

/HE[LP] 'DISPLAY THE HELP
/HI[GH] 'CONTROL THE EXE-FILE LOADING
/INC[REMENTAL] 'PREPARE FOR THE ILINK (ONLY FOR THE QBASIC EXTENDED)
/INF[ORMATION] 'DISPLAY THE PROCESS INFO

/LI[NENUMBERS] 'INCLUDE THE LINE NUMBERS
/M[AP] 'LIST THE PUBLIC SYMBOLS
/NOD[EFAULTLIBRARYSEARCH][:FILENAME] 'IGNORE THE DEFAULT LIBRARIES
/NOE[XTDICTIONARY] 'IGNORE THE EXTENDED DICTIONARY

/NOF[ARCALLTRANSLATION] 'DISABLE THE FAR OPTIMIZATION
/NOG[ROUPASSOCIATION] 'NO GROUP ASSOCIATION
/NOI[GNORECASE] 'PRESERVES THE CASE SENSITIVITY
/NOL[OGO] 'DISABLE THE SIGN-ON BANNER (NOT FOR THE QBASIC 4.5)

/NON[ULLSDOSSEG] 'ORDER THE SEGMENTS W/O NULLS (NOT FOR THE QBASIC 4.5)
/NOP[ACKCODE] 'DISABLE THE CODE-SEGMENT PACKING
/NOPACKF[UNCTIONS] '(ONLY FOR THE VISBASIC)
/OLDOVERLAY '(ONLY FOR THE VISBASIC)

/ON[ERROR]:N 'PREVENTS FROM CREATING THE OUTPUT IF AN ERROR OCCURS (ONLY FOR THE VISBASIC)
/O[VERLAYINTERRUPT]:NUMBER 'SET THE OVERLAY INTERRUPT
/OV[ERLAYINTERRUPT]:NUMBER 'SET THE OVERLAY INTERRUPT, FOR VERSIONS 5.3+
/PACKC[ODE][:NUMBER] 'PACK CONTIGUOUS CODE
/PACKD[ATA][:NUMBER] 'PACK CONTIGUOUS DATA

/PACKF[UNCTIONS] '(ONLY FOR THE VISBASIC)
/PADC[ODE]:PADSIZE 'PAD THE CODE SEGMENTS (ONLY FOR THE QBASIC EXTENDED)
/PADD[ATA]:PADSIZE 'PAD THE DATA SEGMENTS (ONLY FOR THE QBASIC EXTENDED)
/PAU[SE] 'PAUSE DURING LINKING

/PCODE '(ONLY FOR THE VISBASIC)
/PM[TYPE]:TYPE 'NAME APPLICATION TYPE (NOT FOR THE QBASIC 4.5)

/Q[UICKLIBRARY] 'SPECIFY TO MAKE A QBASIC LIBRARY
/QU SPECIFY TO MAKE A QBASIC LIBRARY WHEN YOU ARE RECIEVING AN 'UNRESOLVED EXTERNAL' ERROR
THAT YOU WANT TO IGNORE IT. THE PRODUCED QBASIC LIBRARY RUNS PROPERLY. THIS A MOSTLY UNKOWN
OPTION.

/R 'PREVENTS FROM USING THE EXTENDED MEMORY (ONLY FOR THE VISBASIC)
/SE[GMENTS]:NUMBER 'SET THE MAXIMUM NUMBER OF SEGMENTS
/ST[ACK]:NUMBER 'CONTROL THE STACK SIZE
/T[INY] 'GENERATE A .COM FILE (NOT FOR THE QBASIC 4.5)
/W[ARNFIXUP] 'ISSUE FIX-UP WARNING (NOT FOR THE QBASIC 4.5).

FOR MORE DETAILED INFORMATION ABOUT THIS PROGRAM AND ANOTHER PROGRAMS AND UTILITIES,
RUN AND READ THE PROGRAM QUICKHELP PROVIDED WITH THE QBASIC 7.1, ALSO EXPLAINED IN
THIS TUTORIAL.

Ted
Please acknowledge and thank members who answer your questions!
QB64 is a FREE QBasic compiler for WIN, MAC(OSX) and LINUX : https://www.qb64.org/forum/index.php
Get my Q-Basics demonstrator: https://www.dropbox.com/s/fdmgp91d6h8ps ... s.zip?dl=0
flukiluke
Newbie
Posts: 8
Joined: Sun Nov 07, 2010 6:34 am

Post by flukiluke »

Ted
I have read through the info you posted, and although I am glad for your help, it does not help me with my problem.

luke
Theunis
Coder
Posts: 21
Joined: Sun Oct 17, 2010 5:41 am

Link

Post by Theunis »

In the QB4.5 manual all I can find is -

L1102 Unexpected end-of-file : An invalid format for a library was encountered.
Your assembler must generate 16 bit code.
The object files must be compatible with the Microsoft language family.
If using Fortran, C or Macro assembler you first compile or assemble each module with the proper language translator to produce object files.

I have only made a Lib from the QB4.5 ide using standard Call ABSOLUTE so I cannot help much more than this.
Theunis
Coder
Posts: 21
Joined: Sun Oct 17, 2010 5:41 am

Link errors

Post by Theunis »

I have looked around and would like to suggest the following:

1. on the top of the page- Click - Return to Pete's QBasic site
2. choose - Downloads
3. choose Libraries
4. Download DirectQB v1.61

Use the assembly routines in this download as a reference and check if
the headings etc of your ASM codes are basically the same. Model, medium. .386 etc.
flukiluke
Newbie
Posts: 8
Joined: Sun Nov 07, 2010 6:34 am

Post by flukiluke »

I finally found the problem. Link.exe was getting an error with the bqlb45.lib file. I found a new copy and everything now works fine.

Luke
Post Reply