我正在尝试将 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);