함수 foo() dll A..dll 정의에 다음과 같습니다.C++ dll에서 다른 C++ exe로 벡터를 다시 이동하는 문제
vector<CustomObject> foo()
{
vector<CustomObject> customObjectCollection;
//code which populates customObjectCollection goes here
return customObjectCollection;
}
이 메서드 벡터 foo() dll A exe B
전화 할 때 B에서 함수 foo에
"처리되지 않은 예외 xxx18 0x10487b3f (msvcp90d.dll) B.exe에서 처리되지 않은 예외" 0xC0000005 : 위치 0xfdfdfdfd 쓰기 "동안 액세스 위반"처리되지 않은 예외가 발생합니다.
참고 : CustomObject는 복사 생성자를 구현하지 않습니다.
Batch를 A.dll에 연결하여 디버깅을 시도했을 때 foo() 메서드 내에서 벡터가 문제가 있지만 컨트롤이 B.exe로 돌아 가면 벡터의 밸브가 복사되지 않습니다 !!!
또한 foo 메서드가 벡터를 참조로 반환하면 예외가 발생하지 않고 B.exe가 빈 vetor를받습니다 .
문제는 무엇인가 ?? 내가 CustomObject에 대한 복사 생성자를 구현하지 않았기 때문에.
어떤 도움도 대단히 감사합니다. (질문을 올바로 설명하지 않은 것에 대해 사과드립니다.)
감사합니다
jeel
답변 : :) A.dll에서 foo() 함수를 사용하고 있는데 제대로 작동하지만 다른 dll이나 exe에서 사용하려고 할 때 실패합니다! – JeeZ
그렇다면 (다른 사람들이 이미 답한 것처럼) 링크와 관련이있을 수 있습니다. – BostonLogan