tadams
asked on
Problems with Compiling OWL App under BC++5.02
I have a project for Windows 95 that won't compile. I have tried everything. My brother compiles my App just fine on his computer. I get two different types of error messages. First, I get a dialog that says "You have accidently used the Dummy version of OWLMain" or something like that. Then if I do a complete rebuild, I get errors like so.
Info :Linking C:\WINDOWS\DESKTOP\ScanSav e\OUTPUT\s cansave.ex e
Error: Error: Unresolved external 'TScanSaveOptionsDlg::TSca nSaveOptio nsDlg(TWin dow*,const char*,unsigned int,bool,unsigned long,TModule*)' referenced from C:\WINDOWS\DESKTOP\SCANSAV E\OUTPUT\S CANSAVEOPT IONSDIALOG .OBJ
Error: Error: Unresolved external 'TImagingOptionsPage::TIma gingOption sPage(TPro pertySheet *,TResId,c onst char*,TResId,TModule*)' referenced from C:\WINDOWS\DESKTOP\SCANSAV E\OUTPUT\S CANSAVEOPT IONSDIALOG .OBJ
Error: Error: Unresolved external 'TDriveOptionsPage::TDrive OptionsPag e(TPropert ySheet*,TR esId,const char*,TResId,TModule*)' referenced from C:\WINDOWS\DESKTOP\SCANSAV E\OUTPUT\S CANSAVEOPT IONSDIALOG .OBJ
I assure you I don't have dummy version of OWLMain, and I don't have unresolved externals. Otherwise, how could my brother's computer possibly compile it?
I will award 300 points because I have been looking for the answer for 3 weeks, and it is likely that no one will get it. But I have heard that other people had the same problem, but didn't remember how they got rid of it.
One more thing. Just so everyone doesn't reply for nothing. I have tried creating a new project, and adding files to it, and it still won't work.
Also note that when I backed up my project, it was working fine. When I restored it after reinstalling my system, it stopped working.
-------------------------- ---------- ---------- ----------
Makefile Generated by the IDE
#
# Borland C++ IDE generated makefile
# Generated 29/05/98 at 12:27:27 AM
#
.AUTODEPEND
#
# Borland C++ tools
#
IMPLIB = Implib
BCC32 = Bcc32 +BccW32.cfg
BCC32I = Bcc32i +BccW32.cfg
TLINK32 = TLink32
ILINK32 = Ilink32
TLIB = TLib
BRC32 = Brc32
TASM32 = Tasm32
#
# IDE macros
#
#
# Options
#
IDE_LinkFLAGS32 = -LC:\BC5\LIB
IDE_ResFLAGS32 =
LinkerLocalOptsAtW32_dbOUT PUTbscansa vedexe = -Tpe -aa -V4.0 -c -LC:\BC5\LIB
ResLocalOptsAtW32_dbOUTPUT bscansaved exe =
BLocalOptsAtW32_dbOUTPUTbs cansavedex e =
CompInheritOptsAt_dbOUTPUT bscansaved exe = -IC:\BC5\INCLUDE; .\HEADERS -DSTRICT;_OWLPCH;
LinkerInheritOptsAt_dbOUTP UTbscansav edexe = -x
LinkerOptsAt_dbOUTPUTbscan savedexe = $(LinkerLocalOptsAtW32_dbO UTPUTbscan savedexe)
ResOptsAt_dbOUTPUTbscansav edexe = $(ResLocalOptsAtW32_dbOUTP UTbscansav edexe)
BOptsAt_dbOUTPUTbscansaved exe = $(BLocalOptsAtW32_dbOUTPUT bscansaved exe)
#
# Dependency List
#
Dep_ScanSave = \
.\OUTPUT\scansave.exe
ScanSave : BccW32.cfg $(Dep_ScanSave)
echo MakeNode
Dep_dbOUTPUTbscansavedexe = \
headers\common.h\
.\OUTPUT\diskcopy.obj\
.\OUTPUT\scansaveoptionsdi alog.obj\
.\OUTPUT\scansave.obj\
scansave.def\
.\OUTPUT\scansave.res
.\OUTPUT\scansave.exe : $(Dep_dbOUTPUTbscansavedex e)
$(ILINK32) @&&|
/v $(IDE_LinkFLAGS32) $(LinkerOptsAt_dbOUTPUTbsc ansavedexe ) $(LinkerInheritOptsAt_dbOU TPUTbscans avedexe) +
C:\BC5\LIB\c0w32.obj+
.\OUTPUT\diskcopy.obj+
.\OUTPUT\scansaveoptionsdi alog.obj+
.\OUTPUT\scansave.obj
$<,$*
C:\BC5\LIB\owlwf.lib+
C:\BC5\LIB\bidsf.lib+
C:\BC5\LIB\ctl3d32.lib+
C:\BC5\LIB\import32.lib+
C:\BC5\LIB\cw32.lib
scansave.def
.\OUTPUT\scansave.res
|
.\OUTPUT\diskcopy.obj : diskcopy.cpp
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan savedexe) $(CompInheritOptsAt_dbOUTP UTbscansav edexe) -o$@ diskcopy.cpp
|
Dep_dbOUTPUTbscansaveoptio nsdialogdo bj = \
headers\scansaveoptionsdia log.h\
scansaveoptionsdialog.cpp
.\OUTPUT\scansaveoptionsdi alog.obj : $(Dep_dbOUTPUTbscansaveopt ionsdialog dobj)
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan savedexe) $(CompInheritOptsAt_dbOUTP UTbscansav edexe) -o$@ scansaveoptionsdialog.cpp
|
Dep_dbOUTPUTbscansavedobj = \
headers\scansave.h\
scansave.cpp
.\OUTPUT\scansave.obj : $(Dep_dbOUTPUTbscansavedob j)
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan savedexe) $(CompInheritOptsAt_dbOUTP UTbscansav edexe) -o$@ scansave.cpp
|
.\OUTPUT\scansave.res : scansave.rc
$(BRC32) -R @&&|
$(IDE_ResFLAGS32) $(ROptsAt_dbOUTPUTbscansav edexe) $(CompInheritOptsAt_dbOUTP UTbscansav edexe) -FO$@ scansave.rc
|
# Compiler configuration file
BccW32.cfg :
Copy &&|
-w
-R
-v
-WM-
-vi
-H
-H=ScanSave.csm
-W
-H"owl\pch.h"
| $@
Info :Linking C:\WINDOWS\DESKTOP\ScanSav
Error: Error: Unresolved external 'TScanSaveOptionsDlg::TSca
Error: Error: Unresolved external 'TImagingOptionsPage::TIma
Error: Error: Unresolved external 'TDriveOptionsPage::TDrive
I assure you I don't have dummy version of OWLMain, and I don't have unresolved externals. Otherwise, how could my brother's computer possibly compile it?
I will award 300 points because I have been looking for the answer for 3 weeks, and it is likely that no one will get it. But I have heard that other people had the same problem, but didn't remember how they got rid of it.
One more thing. Just so everyone doesn't reply for nothing. I have tried creating a new project, and adding files to it, and it still won't work.
Also note that when I backed up my project, it was working fine. When I restored it after reinstalling my system, it stopped working.
--------------------------
Makefile Generated by the IDE
#
# Borland C++ IDE generated makefile
# Generated 29/05/98 at 12:27:27 AM
#
.AUTODEPEND
#
# Borland C++ tools
#
IMPLIB = Implib
BCC32 = Bcc32 +BccW32.cfg
BCC32I = Bcc32i +BccW32.cfg
TLINK32 = TLink32
ILINK32 = Ilink32
TLIB = TLib
BRC32 = Brc32
TASM32 = Tasm32
#
# IDE macros
#
#
# Options
#
IDE_LinkFLAGS32 = -LC:\BC5\LIB
IDE_ResFLAGS32 =
LinkerLocalOptsAtW32_dbOUT
ResLocalOptsAtW32_dbOUTPUT
BLocalOptsAtW32_dbOUTPUTbs
CompInheritOptsAt_dbOUTPUT
LinkerInheritOptsAt_dbOUTP
LinkerOptsAt_dbOUTPUTbscan
ResOptsAt_dbOUTPUTbscansav
BOptsAt_dbOUTPUTbscansaved
#
# Dependency List
#
Dep_ScanSave = \
.\OUTPUT\scansave.exe
ScanSave : BccW32.cfg $(Dep_ScanSave)
echo MakeNode
Dep_dbOUTPUTbscansavedexe = \
headers\common.h\
.\OUTPUT\diskcopy.obj\
.\OUTPUT\scansaveoptionsdi
.\OUTPUT\scansave.obj\
scansave.def\
.\OUTPUT\scansave.res
.\OUTPUT\scansave.exe : $(Dep_dbOUTPUTbscansavedex
$(ILINK32) @&&|
/v $(IDE_LinkFLAGS32) $(LinkerOptsAt_dbOUTPUTbsc
C:\BC5\LIB\c0w32.obj+
.\OUTPUT\diskcopy.obj+
.\OUTPUT\scansaveoptionsdi
.\OUTPUT\scansave.obj
$<,$*
C:\BC5\LIB\owlwf.lib+
C:\BC5\LIB\bidsf.lib+
C:\BC5\LIB\ctl3d32.lib+
C:\BC5\LIB\import32.lib+
C:\BC5\LIB\cw32.lib
scansave.def
.\OUTPUT\scansave.res
|
.\OUTPUT\diskcopy.obj : diskcopy.cpp
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan
|
Dep_dbOUTPUTbscansaveoptio
headers\scansaveoptionsdia
scansaveoptionsdialog.cpp
.\OUTPUT\scansaveoptionsdi
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan
|
Dep_dbOUTPUTbscansavedobj = \
headers\scansave.h\
scansave.cpp
.\OUTPUT\scansave.obj : $(Dep_dbOUTPUTbscansavedob
$(BCC32) -c @&&|
$(CompOptsAt_dbOUTPUTbscan
|
.\OUTPUT\scansave.res : scansave.rc
$(BRC32) -R @&&|
$(IDE_ResFLAGS32) $(ROptsAt_dbOUTPUTbscansav
|
# Compiler configuration file
BccW32.cfg :
Copy &&|
-w
-R
-v
-WM-
-vi
-H
-H=ScanSave.csm
-W
-H"owl\pch.h"
| $@
ASKER
These are the runtime nodes that are included with the project. Since the project cannot be any different than on my brothers computer, there is no need to check with him. After all, I already copied all the files from him, and am using them to try the compile. Also, I have reinstalled my BC++, and so did he. So by default, we should have exactly the same files/settings.
If you still think I should check with him, then let me know.
c0w32.obj
owlwf.lib
bidsf.lib
ctl3d32.lib
import32.lib
cw32.lib
I have changed my question. Please look at it again, and there should be some extra text containing a make file I generated from my IDE project. This will have all the same settings. I also add another comment just before the makefile.
If you still think I should check with him, then let me know.
c0w32.obj
owlwf.lib
bidsf.lib
ctl3d32.lib
import32.lib
cw32.lib
I have changed my question. Please look at it again, and there should be some extra text containing a make file I generated from my IDE project. This will have all the same settings. I also add another comment just before the makefile.
ASKER
Edited text of question
ASKER
To JPM. I found the answer, and it has something to do with your comment. If you can tell me what it is, I will award you your 300 points! Until you respond, no one will get any points, so take your time.
Hint: Most people would not have this problem, nor is it a BC++ problem.
I had a similar problem before, but I had forgotten.
Hint: Most people would not have this problem, nor is it a BC++ problem.
I had a similar problem before, but I had forgotten.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Two possibilities :
1 - Long file names not supported ( option ? )
( you said it's not a BC++ problem )
2 - ( pretty usual )
I guess when you display the run-time nodes you can see the Borland OBJ and Borland LIB you need for example : Cow32.obj owlwfi.lib .........
....and one ( or more ) was missing to get your program compiling fine.
Even it's not the good answer, i'm very glad you are not stucked anymore!!!
it's very frustating wasting so long time with ( sometimes!) very insignificant stuff.
JPM
1 - Long file names not supported ( option ? )
( you said it's not a BC++ problem )
2 - ( pretty usual )
I guess when you display the run-time nodes you can see the Borland OBJ and Borland LIB you need for example : Cow32.obj owlwfi.lib .........
....and one ( or more ) was missing to get your program compiling fine.
Even it's not the good answer, i'm very glad you are not stucked anymore!!!
it's very frustating wasting so long time with ( sometimes!) very insignificant stuff.
JPM
ASKER
You were right on your comment. It is a Long filename problem. I have my Windows machine set so that long filenames take the form (first 8 characters of filename followed by extension) instead of (first 6 characters followed by ~x where x is 1-9).
I had the main cpp file as scansave.cpp, and another as ScanSaveOptionsDlg.cpp. This caused the Scansave.obj to be overwritten with ScanSaveOptionsDlg.obj. Hence both long filenames produce an object file with a dos filename of scansave.obj.
I had the main cpp file as scansave.cpp, and another as ScanSaveOptionsDlg.cpp. This caused the Scansave.obj to be overwritten with ScanSaveOptionsDlg.obj. Hence both long filenames produce an object file with a dos filename of scansave.obj.
You should compare the settings of BC++ in your computer with your brother computer 's settings.
The same for the IDE projects
( toggle the Show RunTime nodes in Properties\Environment options )
May I suggest you give more information about your project options
By the way, I point out a long file name : scansaveoptionsdialog Is it the only one ?