Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何集成C++;机器人框架中的API? 我为我的项目开发了C++ API。还创建了一个linux.so共享库。我需要使用robot框架关键字调用这些api_C++_C_Robotframework - Fatal编程技术网

如何集成C++;机器人框架中的API? 我为我的项目开发了C++ API。还创建了一个linux.so共享库。我需要使用robot框架关键字调用这些api

如何集成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文件相同的路径中创建

提前感谢。

可以使用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文件相同的路径中创建了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"