2012-08-17 3 views
1

콘서트 기술을 사용하여 IloCplex로 최적화 모델을 구축 중입니다. 내 루틴 내에서 교수가 몇 년 전에 저술 한 서브 루틴을 호출해야합니다. 이 서브 루틴은 "CPXopenCPLEX가 리턴 한 CPLEX 환경에 대한 포인터"라는 인수로 필요합니다. 문제는 콘서트 기술을 사용하여 그러한 포인터를 만드는 방법을 찾을 수 없다는 것입니다. "CPXopenCPLEX"는 호출 할 수있는 라이브러리에 속한 것으로 보입니다. 지금까지 내가 한 일은 내 모델에 IloEnv를 선언하는 것입니다.IloEnv를 CPXENVptr로 변환

IloEnv env;

다음 CPLEX 환경에 대한 포인터로 변환하려고합니다. CPXENVptr cpxenv; cpxenv = (CPXENVptr) & (env);

하지만 작동하지 않는 것 같습니다. 그것은 컴파일,하지만 난 메시지

"분할 오류 (코어 덤프)"나는 코드

을 실행할 때 나는 누군가가 나를 도울 수 있기를 바랍니다?

+0

C에서 포인터를 캐스팅 할 때 컴파일러에서 하나의 데이터 구조를 마치 다른 것으로 취급하도록 알려주므로 변환이 수행되지 않습니다. 호출하는 "서브 루틴"은 CPXEnvptr과 같은 매개 변수를 처리합니다. 이것은 코어 덤프를 제공합니다. C는 그런 식으로 발을 쏠 수있게 해줍니다. –

답변

0

단순히 로컬 변수로 선언하지 않고 환경을 초기화해야합니다.

int status; 
CPXENVptr env; 
env = CPXopenCPLEX (&status); 
... 
+0

내가 너를 따라갈 수 있을지 모르겠다. 아마도 내 질문에 정확하지 않았기 때문일 수 있습니다. 나는 콘서트 기술을 사용하고 다른 모든 것들을 빌드하는 IloEnv를 만들어서 시작한다. 내가 제안한 것을 수행하면 컴파일러는 "="연산자가 일치하지 않고 CPXENVptr에서 const IloEnv 로의 변환을 알 수 없다고 알려줍니다. – Sune