gpt4 book ai didi

c++ - 为什么在尝试编译我的第一个 CORBA 服务器(使用 ACE/TAO ORB 实现)时会出现链接器错误?

转载 作者:行者123 更新时间:2023-11-28 06:30:57 25 4
gpt4 key购买 nike

尝试实现我的第一个 CORBA 服务器(使用 ACE/TAO ORB 实现)我使用以下 makefile:

#compiler                                                                                                                                                      
CC=g++
#compiler options
CPPFLAGS=-Wall -I. -I/usr/include/ -I/usr/include/orbsvcs/
LFLAGS=-L/usr/lib64/ -lACE -lTAO -lTAO_PortableServer -lTAO_DynamicAny -lTAO_CosNotification -lTAO_CosNaming
#source files
SOURCES=$(wildcard *.cpp)
#object files
OBJECTS=$(SOURCES:.cpp=.o)

#executable filename
EXECUTABLE=main
#Special symbols used:
#$^ - is all the dependencies (in this case =$(OBJECTS) )
#$@ - is the result name (in this case =$(EXECUTABLE) )

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
#$(LINK.o) $^ -o $@
$(CC) $(LFLAGS) $^ -o $@

%.o: %.c
$(CC) $(CPPFLAGS) -c $<

clean:
- rm -rf $(EXECUTABLE) $(OBJECTS)

编译时出现以下错误:

g++  -Wall -I. -I/usr/include/ -I/usr/include/orbsvcs/  -c -o cryptC.o cryptC.cpp
g++ -Wall -I. -I/usr/include/ -I/usr/include/orbsvcs/ -c -o cryptS.o cryptS.cpp
g++ -Wall -I. -I/usr/include/ -I/usr/include/orbsvcs/ -c -o main.o main.cpp
In file included from main.cpp:5:
CryptographicImpl.h: In member function ‘virtual char* CryptographicImpl::decrypt(const CaesarAlgorithm::charsequence&, CORBA::ULong, CORBA::ULong)’:
CryptographicImpl.h:49: warning: comparison between signed and unsigned integer expressions
#g++ cryptC.o cryptS.o main.o -o main
g++ -L/usr/lib64/ -lTAO_PortableServer -lTAO_DynamicAny -lACE -lTAO -lTAO_CosNotification -lTAO_CosNaming cryptC.o cryptS.o main.o -o main
cryptC.o: In function `TAO::Objref_Traits<CaesarAlgorithm>::marshal(CaesarAlgorithm*, TAO_OutputCDR&)':
cryptC.cpp:(.text+0x7f): undefined reference to `CORBA::Object::marshal(CORBA::Object*, TAO_OutputCDR&)'

整个编译日志:http://pastebin.com/0KpLXixw

我使用 this repo 中的 ACE (6.2.8) 和 TAO(2.2.8)在我的 CentOS 6.6 上

最佳答案

库的顺序很重要,从右到左你应该确保首先指定基础库,而不是使用基础的库,例如 -lTAO_PortableServer -lTAO_AnyTypeCode -lTAO -lACE -ldl - lrt。有关详细信息,另请参阅 Why does the order in which libraries are linked sometimes cause errors in GCC? .

我建议您编译 TAO 提供的单元测试之一并从那里复制,或者使用 MPC 生成 makefile。

同时检查 TAOX11 ,新的 IDL 到 C++11 语言映射更易于使用,我们提供免费的评估许可证,您可以将其用于类使用。

关于c++ - 为什么在尝试编译我的第一个 CORBA 服务器(使用 ACE/TAO ORB 实现)时会出现链接器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com