3

我正在尝试在 VeriFone sdk 中使用 Vrxcc 编译器进行编译。当我想为 Vx675 姿势付款创建图形应用程序时,编译器显示此错误

错误:L6218E:未定义符号 VxGUI::VxGUI()(来自 Main.o)

Main.cpp 是

#include <stdio.h>
#include <svc.h>
#include <svc_gui.h>

void main()
{
    VxGUI *m_GUIObj;
    m_GUIObj = new VxGUI(); 
} 

MakeFile 是

#
################### Paths   ##################
#

ACTIncludes = $(EVOACT)include
EOSIncludes = $(EOSSDK)\include
GUIIncludes  =  $(GUISDK)\Include 
CardslotInclude=$(VCARDSLOT)\Include
DTKTOOLS=C:\eVoAps\Tools

###################  App Source Paths   ##################
SrcDir = .


################### Compiler/Linker/Outhdr Output Paths ##################
ObjDir = .\vobj
OutDir = .\vbin


###################for release...##################
ACTStaticLibraries = $(EVOACT)\Output\RV\Files\Static\Release
ACTSharedLibraries = $(EVOACT)\OutPut\RV\Files\Shlib1\Release
VMACLibraries = $(EVOVMAC)\Output\RV\Lib\Files\Debug
EOSLibararuies = $(EOSSDK)\lib
GUISDKLibraries= $(GUISDK)\lib
VRXSDKLobraries= $(EVOSDK)\lib
VCARDSLOTLobraries= $(VCARDSLOT)\Output\RV\Files\Static

#
######################### Options for Tools ########################
#

############# Compiler Options  ############
Includes = -I$(ACTIncludes) -I$(EOSIncludes) -I$(GUIIncludes) -I$(CardslotInclude)

# for release version change the COptions to 
#COptions =  -DLOGSYS_FLAG -DVERIFONE
COptions =  -D_VERIFONE -DVERIFONE -DEVO -p -W -D ARM -D _ARM -g  -D _MAKE_VX_
VRXHDRPARAM= -s 300000 -h 4000000 

#
######################### Dependencies  ########################
#

AppObjects = $(ObjDir)\Main.o 


#Using ACT static library.
ACTLibs = \
$(ACTStaticLibraries)\act2000.a \
$(EOSLibararuies)\CEIF.o    \
$(EOSLibararuies)\svc_net.o  \
$(EOSLibararuies)\elog.o \
$(GUISDKLibraries)\libvxguisdk.so







#
#########################  sample Target Definition ########################
#

pseudoOut : $(OutDir)\Hello.out
         $(EVOSDK)\bin\vrxhdr $(VRXHDRPARAM) -l ceif.lib=N:/ceif.lib -l net.lib=N:/net.lib -l elog.lib=N:/elog.lib  $(OutDir)\Hello.out


$(OutDir)\Hello.out : $(AppObjects)
  $(EVOSDK)\bin\vrxcc -map -p   $(AppObjects) $(ACTLibs) -o Hello.out
    move  Hello.out $(OutDir)
    del  /F /Q $(ObjDir)\*.o


########################  Compile #########################


$(ObjDir)\Main.o : $(SrcDir)\Main.cpp 
    $(EVOSDK)\bin\vrxcc  -c  $(Includes)  $(COptions) $(SrcDir)\Main.cpp -e"-" | "$(DTKTOOLS)\fmterrorARM.exe"
    move Main.o $(ObjDir)\Main.o

请帮我解决这个问题。

4

1 回答 1

2

上面的问题解决了吗?如果不是,请注意,使用 libvxgui 时,必须使用 C++ 语法并生成 .vso 文件而不是 .out bin 文件。

在 CC 和 Link 选项中插入 -vsoapp 选项,输出必须是 .vso 文件。

COptions = -g -b -p -vsoapp -map -armcc,"--diag_suppress 1300\,611\,9,--apcs=/fpic --export_all_vtbl" -DLOGSYS_FLAG -DLOGSYS_NEW_API_STYLE

LOptions = -g -p -vsoapp -b -k -map

$(VRXSDK)/bin/vrxcc $(LOptions) $(AppObjects) $(Libs) -o $@

$(VRXSDK)/bin/vrxhdr -s $(STACK_SIZE) -h $(HEAP_SIZE) -lnet.lib=N:/net.lib -lceif.lib=N:/ceif.lib -lssl.lib=N:/ ssl.lib -lelog.lib=N:/elog.lib $(OutDir)/$(OutFile)

$(ObjDir)/%.o: $(SrcFiles)/%.c $(VRXSDK)/bin/vrxcc -c $(COptions) $(包括) $< -o $@

$(ObjDir)/%.o: $(SrcFiles)/%.cpp $(VRXSDK)/bin/vrxcc -c $(COptions) $(包括) $< -o $@

我已经成功使用了 VxGUI 并包含 QT 对象。如果您有更多问题,请告诉我。我可以向您发送一个工作项目。

最好的问候,莱安德罗

于 2016-03-22T19:37:46.023 回答