스레드 안전하지 않은 DLL이 여러 스레드에서 사용해야합니다. Windows가 전체 파일 경로 또는 DLL/모듈 이름에 관계없이로드 된 DLL을 어떻게 감지하는지 잘 모르겠습니다. 파일 경로가 사용된다면 DLL을 각 스레드별로 별도의 파일에 복사하는 것이 가능하다고 생각합니다. MyLib1.dll
, MyLib2.dll
, MyLib3.dll
및 LoadLibrary
으로로드하십시오.동일한 DLL 복사본에 대한 여러 LoadLibrary
답변
LoadLibrary
을 호출 할 때 전체 절대 파일 이름을 사용하고 이러한 절대 파일 이름이 다른 한 여러 인스턴스를로드 할 수 있습니다.
개인적으로 나는 스레드를 만든 다음이 DLL을 <threadID>.dll
이라는 임시 폴더에 복사합니다. 그것은 이름의 유일성을 보장 할 것입니다.
다른 파일 경로는 있지만 내보내기 테이블의 DLL 이름이 같은 두 개의로드 된 DLL이있는 경우는 어떻습니까? 나중에 로딩 될 다른 모듈에 대한 수입을 해결하기 위해 로더 중 어느 것을 사용해야합니까? – Sergio
이 접근 방식은 각 dll에 대해 고유 한 메모리를 만드나요? –
@simon 그 질문은 부정확합니다. 고유 한 메모리로 무엇을 의미합니까? –
- 1. loadlibrary 함수를 사용하여 여러 라이브러리로드
- 2. MATLAB에 대한 사용자 정의 C DLL - loadlibrary 오류
- 3. loadLibrary()로 java에서 C++ DLL 호출하기
- 4. LoadLibrary 998 오류
- 5. 공유 메모리 복사본에 대한 cudaMemcpy2D
- 6. 을 LoadLibrary MSVCRT 문제
- 7. 동일한 프로세스에서 DLL 그룹의 여러 복사본로드 중
- 8. Ruby에서 LoadLibrary 및 GetProcAddress
- 9. LoadLibrary - CU에서 올바른 정리
- 10. Visual Basic 6에서 동적으로로드 된 DLL (LoadLibrary 사용)에 액세스
- 11. 최상의 성능을위한 DllImport 또는 LoadLibrary
- 12. LoadLibrary 함수 - 컴파일 오류
- 13. STATUS_STACK_BUFFER_OVERRUN (LoadLibrary 포함)
- 14. DNN 사이트의 로컬 복사본에 대한 로그인이 실패합니다.
- 15. 다른 'dll'확장자를 가진 파일의 LoadLibrary
- 16. 파일의 작업 복사본에 대한 잠금과 저장소 파일에 대한 잠금의 차이점
- 17. C++의 얕은 복사본에 대한 질문
- 18. SVN 저장소의 로컬 복사본에 대한 커밋 만들기
- 19. 작업 복사본에 대한 SVN 위치 변경
- 20. 로컬 복사본에 대한 보석 기능을 확장합니다.
- 21. 원격 스레드가 오류가있는 LoadLibrary 호출에 실패했습니다.
- 22. 등을 LoadLibrary 및 GetProcess와 객체에게
- 23. C# LoadLibrary from byte []
- 24. ObservableCollection의 복사본에 바인딩
- 25. 동일한 dll에서 여러 함수 호출
- 26. 동일한 열에 대한 여러 기준
- 27. 동일한 메소드에 대한 여러 after_commit
- 28. 동일한 응용 프로그램 풀이지만 여러 프로젝트와 대형 .dll
- 29. LoadLibrary() - "잘못된 액세스 메모리 위치 (998)"
- 30. WordPress 사이트의 복사본에 로그인
뮤텍스 세마포어와 DLL 호출을 동기화하지 않는 이유는 무엇입니까? – sb9
@ sb9 DLL은 내부 상태를 유지할 수 있으므로 뮤텍스가 충분하지 않을 수 있습니다. – Sergio
또한 뮤텍스는 확장성에 대한 전망을 파괴합니다. –