2

我正在尝试将 SymbolicC++ 库集成到现有的解决方案中。我的规格如下:Windows 7 操作系统上的 Visual Studio 2010 RTM。

现在我的问题:

我已经有了一个解决方案,我想将函数与符号变量集成在一起。还有另一个以前集成的库(OMPL“开放运动规划库)。如果我尝试包含 symbolicc++.h,则无法通过以下错误编译解决方案:

错误 10 错误 C2825:“_Fty”:后跟“::”时必须是类或命名空间 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28`

错误 11 错误 C2903:“结果”:符号既不是类模板也不是函数模板 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28

错误 12 错误 C2039:“结果”:不是“全局命名空间”的成员 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28

错误 13 错误 C2143:语法错误:缺少 ';' 在'<'之前 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28

错误 14 error C2039: 'type' : is not a member of '`global namespace'' c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28

错误 15 错误 C2238: ';' 前面的意外令牌 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 28

错误 16 错误 C2039:“_Type”:不是“std::tr1::_Result_type2<__formal,_Fty,_Arg0,_Arg1>”的成员 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ xx 结果 40

错误 17 错误 C2146:语法错误:缺少 ';' 在标识符“_Type”之前 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 40

错误 18 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 40

错误 19 错误 C2602:'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' 不是 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>' 基类的成员 c :\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 40

错误 20 错误 C2868: 'std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type' : using-declaration 的非法语法;预期的限定名称 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xxresult 40

错误 21 错误 C2678:二进制“==”:未找到采用“std::tr1::_Bind_fty<_Fty,_Ret,_BindN>”类型的左侧操作数的运算符(或没有可接受的转换) D:\软件\RobotKitV3.0\SensorPluginMotionPlanner\Zusatz\ompl_4_RK\RK_ServerSensor_ompl\RK_ServerSensor_ompl\ServerSensor_ompl.cpp 2587

我很确定这两个库之间存在一些问题。但我没有让它正常工作。当我从这里更改时,有一行(称为错误 21):

if(bind(serverSocket, (sockaddr*) &addressServer, sizeof(addressServer)) == SOCKET_ERROR)

对此:

if(::bind(serverSocket, (sockaddr*) &addressServer, sizeof(addressServer)) == SOCKET_ERROR)

我没有这些错误了!但是当我尝试启动 .exe 时,它​​会因以下错误而失败:

应用程序无法正确启动 (0xc000007b)。单击确定关闭应用程序

除非我排除该行:

#include <symbolicc++.h>

有人有想法完成这项工作吗?令人沮丧的是,我从 5 天开始就尝试实现 symbolicc++.h 并且无法执行我的解决方案。

编辑:

所以我取得了一些进展。如果我只是注释掉除下面这段代码之外的所有内容,则不再有错误。

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <winsock.h>
#include <fstream>
#include <iostream>
#include <string>
#include <WinBase.h>

#include "..\..\SymbolicC++\include\symbolicc++.h"

#include "ServerSensor_ompl.h"

#include <ompl/base/SpaceInformation.h>
#include <ompl/base/spaces/SE3StateSpace.h>
#include <ompl/base/spaces/SE2StateSpace.h>
#include <ompl/base/spaces/SO2StateSpace.h>
#include <ompl/geometric/planners/rrt/RRTConnect.h>
#include <ompl/geometric/SimpleSetup.h>
#include <ompl/config.h>
#include <ompl/geometric/planners/rrt/RRT.h>
#include <ompl/geometric/planners/rrt/RRTConnect.h>
#include <ompl/geometric/planners/rrt/RRTStar.h>

Symbolic Test("Test");

namespace ob = ompl::base;
namespace og = ompl::geometric;

namespace ob_Con_WP = ompl::base;
namespace og_Con_WP = ompl::geometric;

namespace ob_Con_RC = ompl::base;       // Robot_Cell
namespace og_Con_RC = ompl::geometric;  // Robot_Cell

WSADATA wsa;
struct sockaddr_in addressServer;
int commSocket, serverSocket;

bool RK_active = true;

int m_bufferLength = 0;
int m_bufferLength2 = 0;

const size_t BufferSize = 100000;
char m_buffer[BufferSize];
char m_buffer2[BufferSize];

int Trial_Cart = 0;
int Trial_Joint = 0;
int Trial_Constraint_WP = 0;
int Trial_Constraint_RC = 0;
int Trial_General = 0;

bool Have_Exact_Solution;
std::fstream f;

int countCalls = 0;
int countCallLimit = 1000;

double Constraint_Bounds[2][6];

ob::StateSpacePtr space_Joint(new ob::RealVectorStateSpace(6));
ob::StateSpacePtr space_Cart(new ob::SE3StateSpace);

ob_Con_WP::StateSpacePtr space_Constraint_WP(new ob_Con_WP::RealVectorStateSpace(6));

ob_Con_RC::StateSpacePtr space_Constraint_RC(new ob_Con_RC::RealVectorStateSpace(6));
ob_Con_RC::SpaceInformationPtr si(new ob_Con_RC::SpaceInformation(space_Constraint_RC));

int _tmain(int argc, _TCHAR* argv[])
{   
    std::cout << "OMPL version: " << OMPL_VERSION << std::endl;
    std::cout << std::endl << std::endl;
    system("pause");
}

但是例如,如果我尝试将下面的这一行放入我的代码中,当我尝试执行时会发生相同的错误(0xc000007B)。

og::SimpleSetup ss_Cart(space_Cart);
4

0 回答 0