일부 메모리 할당을 수행하고 포인터를 반환하는 DLL을 사용하고 있습니다. 코드가 같은 것입니다 :null 포인터를 반환하는 DLL 내부 메모리 할당
ObjectClass *obj = FunctionFromDLL();
obj
가 유효한 포인터하지만 obj->SubObject
이 (0xcdcdcd) 내가 확인하고 FunctionFromDLL()
가 제대로 SubObject
할당하는 나쁜 포인터,이 포인터는 함수가 반환 잘못된 값을 가져옵니다 방문객.
DLL이 메모리를 "공유"할 수있는 특별한 것이 있습니까?
메모리를 공유하기 위해 DLL과 관련하여 특별한 작업을 수행 할 필요가 없습니다. DLL은 동일한 주소 공간에 있습니다. 너의 문제는 다른거야. DLL 경계를 넘어 C++ 객체를 전달하려고합니까? 양쪽 컴파일러가 같고'dllexport' /'dllimport'를 사용하지 않으면 작동하지 않습니다. 우리가 도울 수 있기 전에 우리에게 더 많이 말해야합니다. –
내 보낸 DLL 함수가 __declspec (dllexport)을 수행 중이고 가져온 .h 파일에서 __declspec (dllimport)를 사용하고 있습니다. 두 프로젝트가 동일한 Visual Studio를 사용하여 컴파일됩니다. – Guillaume
더하지 않습니다. 당신이 아직 우리에게 말하지 않은 뭔가 여야합니다. 초기화 된 메모리는 모듈 경계를 지날 때 초기화되지 않습니다. –