Page 1 of 1

help needed for my first eXpress try

Posted: Sat Oct 24, 2015 5:52 am
by alepap
Hi, I ´m trying my first with eXpress++.
I cant build the project. Please help.

**** This is the problem i need to fix.
Xbase++ (R) ProjectBuilder Version 2.00.644
Copyright (c) Alaska Software 1997-2015. All rights reserved.
alink @C:\Users\alepap\AppData\Local\Temp\10242426.tmp
Alaska 32-Bit Linker Version 2.00.644
Copyright (c) Alaska Software 1997-2015. All rights reserved.

C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_LOADRDDS
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_GETTEMPLATE
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_GETLISTSET
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_GETANCHORCB
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_GETIDDEFAULT
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_DOT
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_GETOPTDEFAULT
C:\hello\HELLO.obj: error ALK2102: unresolved external symbol DC_READGUI
ALINK: fatal error ALK4102: 8 external symbols unresolved

'alink @C:\Users\alepap\AppData\Local\Temp\10242426.tmp' returned error 1
Processing time: 0.03 secs.


** this is my path
C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\ProgramData\Oracle\Java\javapath;c:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SDKs\TypeScript\1.1\;C:\Program Files\Skype\Phone\;C:\Program Files\Common Files\Acronis\SnapAPI\;C:\Program Files\Windows Live\Shared;C:\Program Files\FERRO Software\FtpUse;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\ALASKA_XX\BIN;C:\BAT;C:\exp20\bin20;C:\exp20\bin

** this is my LIB
C:\hello>echo %lib%
C:\ALASKA_XX\LIB;C:\exp20\lib

** this is my include
C:\hello>echo %include%
C:\ALASKA_XX\INCLUDE;C:\exp20\include

** I have prg running on 1.82 and some on 2.0
For this reason, I copy all the files of Alaska to a path c:\alaska_xx\*.* to be able to compile from one version to another.
Now I have the xbase 2.0 in the folder c:\alaska_xx

** this is my project file
[PROJECT]
HELLO.XPJ

[HELLO.XPJ]
HELLO.EXE

[HELLO.EXE]
COMPILE = xpp
GUI = yes
LINKER = alink
RC_COMPILE = arc
RC_FLAGS = /v
// $START-AUTODEPEND
std.ch
set.ch
natmsg.ch
get.ch
prompt.ch
memvar.ch
collat.ch
sql.ch
dcdialog.ch
xbp.ch
gra.ch
dcreg.ch
HELLO.obj
// $STOP-AUTODEPEND
HELLO.PRG
dcdesign.lib

** this is my hello.prg in c:\hello
This was done by Roger at the Xbase conference. I took pictures and retyped it to give it a try.

#include "dcdialog.CH"
#include "express.CH"
#include "appevent.CH"
#pragma library("dcdesign.LIB")

FUNCTION MAIN()
LOCAL GetList[0]
LOCAL cHello := SPACE(20)
LOCAL lStatus
LOCAL oBrowse
LOCAL oBrowse2
LOCAL oSay
LOCAL aHello[10]
LOCAL i
LOCAL GetOptions
LOCAL aDir := Directory()
LOCAL nPointer

AFILL(aHello,SPACE(20))

DC_LOADRDDS()
USE \exp20\data\customer VIA "FOXCDX"

@ 2, 10 DCSAY "HELLO WORLD" GET cHello ;
SAYFONT "24.Arial Bold" ;
SAYSIZE 0 ;
GETFONT "24.Arial Bold" ;
SAYCOLOR GRA_CLR_BLUE, GRA_CLR_PALEGRAY ;

@ 4, 40 DCGET aHello[1]
@ 6, 10 DCGET aHello[2]

DCHOTKEY xbeK_ALT_F12 ACTION {||DC_DOT()}

@ 8,10 DCBROWSE oBrowse DATA aDir SIZE 100,20 ;
POINTER nPointer ;
ITEMMARKED {||oSay:setCaption(aDir[nPointer,1])} ;
ITEMSELECTED {||IIF(oBrowse:colpos==1,(aDir[nPointer,1] := "Done", oBrowse:refreshCurrent()),nil)}

FOR i:= 1 TO 10
DCBROWSECOL ELEMENT i HEADER STR(i) PARENT oBrowse WIDTH 10
NEXT

@ 30, 10 DCSAY "" SAY SIZE 100 OBJECT oSay COLOR GRA_CLR_BLUE, GRA_CLR_WHITHE ;
FONT "12.Lucida Console Bold"

@ 32, 10 DCBROWSE oBrowse2 ALIAS "CUSTOMER" SIZE 100, 10 FONT "10.Courier New"

DCBROWSECOL FIELD CUSTOMER->BILL_NAME HEADER "Billing Name" PARENT oBrowse2 WIDTH 25
DCBROWSECOL FIELD CUSTOMER->BILL_STRT HEADER "Street" PARENT oBrowse2 WIDTH 25
DCBROWSECOL FIELD CUSTOMER->BILL_CITY HEADER "City" PARENT oBrowse2 WIDTH 25

DCGETOPTIONS ;
WINDOWHEIGHT 900 ;
WINDOWWIDTH 1000 ;
RESIZE ;
; // RESIZEDEFAULT DCGUI_RESIZE_AUTORESIZE ;
SOURCEFILE "\HELLO\HELLO.PRG"

DC_GETOPTDEFAULT(GetOptions)

DCREAD GUI TITLE "My First Hello" MODAL ;
FIT ;
ADDBUTTONS ;
TO lStatus OPTIONS GetOptions HANDLER myHandler

IF lStatus
MsgBox("Thank You")
ENDIF

RETURN NIL

* -------------------------------------------------------------------

PROC appsys ; RETURN

* -------------------------------------------------------------------

STATIC FUNCTION myHandler( nEvent, mp1, mp2, oXbp, oDlg, aGetList )
IF DC_DesignHandler( nEvent, mp1, mp2, oXbp, oDlg, aGetList ) == DCGUI_IGNORE
RETURN DCGUI_IGNORE
ENDIF
RETURN DCGUI_NONE

* -------------------------------------------------------------------

Re: help needed for my first eXpress try

Posted: Sat Oct 24, 2015 11:31 am
by Cliff Wiernik
In your project file you need to include dclipx.lib. Some functions may also need dclip1.lib. You appear to only have dcdesign.lib in your project file.

Re: help needed for my first eXpress try

Posted: Sun Oct 25, 2015 6:34 am
by alepap
Thank you. This solved my problem.

Re: help needed for my first eXpress try

Posted: Sun Oct 25, 2015 11:03 am
by rdonnay
You appear to only have dcdesign.lib in your project file.
There will be a new build in about 3 weeks, prior to the European Devcon.
I am dedicating this build to improving the designer. I will be showing the new design features in my sessions.

Re: help needed for my first eXpress try

Posted: Thu Oct 29, 2015 6:30 am
by alepap
There is a small difference using SET PROC vs PBUILD with a project.

I was using SET PROC TO from my first PRG file.
This worked great and now the new way is to use PBUILD and project file.

When I moved all my SET PROC (PRG) files to the project.xpj file, the compilation worked fine.
But there is an undocumented difference.

When you use the PBUILD for the project file, you must add all the #define in each PRG file.

Before when I was using the SET PROC, my defines are only in the first PRG file where the MAIN function is.
With PBUILD PROJECT.XPJ, you must have the defines in each PRG file that uses defines.