VS2010으로 작성된 dll (DLL A)에 MFC 및 VS2010으로 작성된 다른 dll을 사용합니다. VS2008로 빌드되고 VS2008로 다시 빌드 된 응용 프로그램에서 실행되는 다른 DLL (DLL B)이 있습니다. DLL A (# import 지시문 사용하여 DLLB 가져오고 com 개체를 만듭니다. 객체 생성은 성공하지만 어플리 케이션이 어딘가에 충돌합니다. 컨트롤을 표시 할 때 충돌이 발생한다고 생각합니다 (이는 단지 가정 사항입니다). 것은 응용 프로그램의 소스가 없습니다. DLL A는 해당 응용 프로그램의 플러그입니다. 그런 혼합을 할 때 고려해야 할 사항이 있습니까? 전혀 가능합니까?VS2008을 사용하여 dll을 사용할 수 있습니까? VS2010을 사용하여 dll을 사용할 수 있습니까?
3
A
답변
1
그렇습니다. C 링크를 사용하는 경우 코드를 DLL 경계에서 호출하는 것이 좋습니다. DLL 경계가 char * 및 int와 같은 기본 C 유형을 사용하는 경우 DLL 경계를 넘어 C++ 참조/포인터를 전달하는 경우에는 실제로 동일한 컴파일러 플래그와 동일한 컴파일러로 양쪽을 빌드해야합니다. VS2010 컴파일러가 VS2008 컴파일러와 완전히 같은 방식으로 클래스 객체에 대한 메모리를 레이아웃한다는 보장은 없습니다. 동일한 바이트 정렬 플래그를 사용하는 경우 레이아웃은 거의 동일하지만 보증 할 수는 없습니다 .
관련 문제
- 1. Google API에서 .NET DLL을 사용할 수 있습니까
- 2. Linux에서 PHP로 DLL을 사용할 수 있습니까?
- 3. ActivePivot 내에서 C++ DLL을 사용할 수 있습니까?
- 4. C#에서 win32 DLL을 사용할 수 있습니까?
- 5. VB6 프로젝트에서 .Net .dll을 사용할 수 있습니까?
- 6. regasm을 사용하여 등록하지 않고 VB6에서 .NET DLL을 사용할 수 있습니까?
- 7. 영역을 컴파일하고 dll을 여러 사이트의 모듈로 사용할 수 있습니까?
- 8. C# 응용 프로그램에서 다른 소프트웨어 DLL을 어떻게 사용할 수 있습니까?
- 9. pyc로 컴파일 된 IronPython dll을 사용할 수 있습니까?
- 10. 참조 파일을 참조하는 DLL을 사용할 수 없습니다.
- 11. 메트로 응용 프로그램 내부에서 외부 DLL을 사용할 수 있습니까?
- 12. 어떻게 델파이에서 C로 작성된 외부 DLL을 사용할 수 있습니까
- 13. C#의 네이티브 DLL을 어떻게 사용할 수 있습니까?
- 14. 가지고 있지 않은 C# (관리되는) DLL을 어떻게 사용할 수 있습니까?
- 15. 사용자 컴퓨터의 vba에서 .Net dll을 어떻게 사용할 수 있습니까?
- 16. 중첩 된 DLL을 단 하나의 참조로 사용할 수 있습니까
- 17. 기존 ASP에서 .NET 2.0 DLL을 어떻게 사용할 수 있습니까?
- 18. 어떻게 C# DLL을 Win32 C++ 프로젝트에서 사용할 수 있습니까?
- 19. 외부 DLL을 사용할 수 없습니다 : FileNotFoundException
- 20. 참조 된 dll을 페이지에서 사용할 수 없습니다.
- 21. AppHarbor에서 Excel dll을 사용할 수 없음
- 22. dll을 함께 묶을 수 있습니까?
- 23. 터보 C/C++ 컴파일러를 사용하여 DLL을 생성 할 수 있습니까?
- 24. cpython 패키지를 사용할 수 있습니까?
- 25. Dllmain은 FreeLibrary를 사용할 수 있습니까?
- 26. DLLMain 함수없이 DLL을 가질 수 있습니까?
- 27. VS2008을 사용하여 솔루션 템플릿을 만들 수 있습니까?
- 28. lib와 DLL을 동적으로 연결할 수 있습니까?
- 29. Silverlight에서 Microsoft.Office.Interop.Word .dll을 사용하여 MSWord의 SaveDialogFile을 조작 할 수 있습니까?
- 30. C++에서 DLL을 사용할 때?
DLL A에서 가져 오거나 내보내는 모든 매개 변수는 DLL A에 노출 된 com 개체입니다. –
이 경우에는 COM을 사용하기 때문에 dll 경계의 각면이 다른 컴파일러를 사용해서는 안됩니다 . – Dughall