내 작업에 다음과 같은 문제가 발생했습니다. 동일한 소스 코드 (물론 진입 점 제외)를 기반으로하는 MFC .dll 및 MFC .exe 프로젝트가 두 개인 경우, 동일한 데이터를 처리 할 때 생성 된 결과 둘 다에 대한 모든 프로젝트 설정을 확인하고 모든 프로젝트 속성이 비슷하다는 것을 알았습니다 (적어도 중요하다고 생각하는 것들). 몇 가지 테스트를 실행 한 후 나는 다음 배운 :MFC .exe 및 .dll이 동일한 코드에 대해 다른 resuls를 생성합니다.
- MFC .exe를 모두 '디버그'와 '릴리스'모드에서 동일한 데이터 세트에 같은 결과를
- MFC의 .DLL은 '디버그를 위해 동일한 데이터 세트에 다른 결과를 '및'출시 '모드
- .dll의'릴리스 '결과가 .dll의'디버그 '결과 또는 .exe의'디버그 '또는'릴리스 '결과와 일치하지 않습니다.
.exe는 두 컴파일러 구성에 대해 동일한 결과를 제공하기 때문에 올바르게 작동한다고 가정합니다. 그러나이를 확인할 수는 없습니다. 따라서 .dll 'Release'구성으로 어떻게이 문제를 해결할 수 있습니까? 내 말은, 다른 사람들과 어떻게 강제로 일치시킬 수 있을까? 그러한 행동을 설명하는 것은 무엇입니까?
편집은 내가 델파이에 작성된 호스트 응용 프로그램을 사용하기 때문에 문제가 발생 같아요. 나는이 제안을 테스트하기 위해 새로운 C++ exe를 만들었고 어떤 실수도없이 정상적으로 작동하는 것을 보았다. 유일한 차이점은 델파이 응용 프로그램에서 사용할 DLL을 만드는 것입니다. extern "C"으로 표시되었지만 C++ 응용 프로그램에서는 extern으로 작성했습니다. 이 주제에 대한 다른 토론의 세부 사항은 here입니다. 그러나 extern 표시가있는 DLL을 "C"없이 사용하려고하면 내 Delphi 응용 프로그램에서 함수 입력 지점을 찾을 수 없다고보고합니다. 어떤 아이디어?
결과가 정확히 무엇을 의미합니까? 일부 코드와 실제 출력을 게시하십시오. – Superman
프로젝트 설정으로 코드를 디버깅하지 마십시오. 디버거를 사용하십시오. –
음, 사실 많은 코드가 있습니다. 아마도 15 개 정도의 파일 일 것입니다. 분석하기가 거의 어렵다고 생각합니다. –