如何集成C++;机器人框架中的API? 我为我的项目开发了C++ API。还创建了一个linux.so共享库。我需要使用robot框架关键字调用这些api
提前感谢。可以使用python库ctypes轻松调用C++API。正如您可能已经知道的,python库可以集成到robot框架中如何集成C++;机器人框架中的API? 我为我的项目开发了C++ API。还创建了一个linux.so共享库。我需要使用robot框架关键字调用这些api,c++,c,robotframework,C++,C,Robotframework,提前感谢。可以使用python库ctypes轻松调用C++API。正如您可能已经知道的,python库可以集成到robot框架中 让我们假设你需要使用机器人框架调用SeNeMsg C++ API。 请遵循以下步骤: 1。创建C++ API库。文件>/P> connect.cpp 外部“C” { } g++-std=c++11-fpic-c connect.cpp g++-std=c++11-shared-g-o connect.so connect.o 现在,您已经在与cpp文件相同的路径中创建
让我们假设你需要使用机器人框架调用SeNeMsg C++ API。 请遵循以下步骤:
1。创建C++ API库。文件>/P> connect.cpp 外部“C” { } g++-std=c++11-fpic-c connect.cpp g++-std=c++11-shared-g-o connect.so connect.o 现在,您已经在与cpp文件相同的路径中创建了connect.so共享库 2。为C++ API提供Python包装器<强> > /P> connectWrapper.py 导入ctypes 类连接包装器:def __init__(self, ip , port):
self.Lib = ctypes.cdll.LoadLibrary('absolute path to connect.so')
self.Lib.Initialize.argtypes = [ctypes.c_char_p, ctypes.c_int]
self.Lib.Initialize(ip, port)
def SendMessageWrapper(self, msg):
self.Lib.SendMesg.argtypes = [ctypes.c_char_p]
print self.Lib.SendMesg(msg)
创建python包装器API时需要记住的4件事
a) python文件名与类名相同
b) 使用ctypes调用API时,应始终指定输入参数类型。否则,在使用此python库运行robot文件时可能会出现以下错误:
未实现错误:尚未支持可变函数;指定一个
参数表
在本例中,我们将字符串类型的参数指定为ctypes.c_char_p,将ctypes.c_int指定为integer。有关更多信息,请使用以下命令:
[
c) connect.so的绝对路径在ctypes.cdll.LoadLibrary API中给出
d) 使用chmod+x connectWrapper.py将python文件设置为可执行文件
3.将python库添加到robot文件
test.robot.txt
***设置***
库“到connectWrapper.py的绝对路径”10.250.0.1 8080
***测试用例***
发送消息
SendMessageWrapper "Hello World"
您可能注意到,python库是在设置部分添加的,参数作为IP和端口传递。我们在测试用例部分添加了SendMessage关键字,字符串消息“Hello World”作为输入参数
我希望在运行命令之后:
robot test.robot.txt
一切正常:)不确定是否回答了您的问题,但对于初学者来说。嗨,Ringo,我已经浏览了上述链接。他们没有提供我在项目中尝试执行的操作的完整证明解决方案。感谢Ankit,这与我在项目中尝试执行的操作非常相似。我已经运行了上述示例,该示例在我的项目中运行良好linux机器。纯拷贝自…Hi Ringo,这只是我的答案。请检查。我想reformatcode.com会从stackoverflow复制问题答案。com@AnkitDeogirikar在这种情况下,包括答案的来源-同样,这是一个完整的复制粘贴,甚至没有提到链接,它是从某处或其他地方。
SendMessageWrapper "Hello World"