DLL을 언로드 할 때 일부 개체를 파괴해야합니다. 이 객체에는 WSASocket 함수 (연결 재 연결 용)를 호출하는 스레드가 있습니다. 그래서, 난 DLL_PROCESS_DETACH에 대한 응답으로 DllMain에서 소멸자를 호출하지만 그 때문에 내 응용 프로그램이 중단됩니다. 특히, WSASocket에 대한 호출이 잠 깁니다. DllMain에서 일부
DLLMAIN()/DLL_PROCESS_ATTACH에 DLL을로드하면 문제가 발생할 수 있습니다. 하지만 COM Objects을 e.q.를 사용하여 인스턴스 할 수 있습니다. CoInitialize()/CoCreateInstance()? EDIT : 질문 : COM 인스턴스를 만들면 이러한 상황에서 DLL을로드하는 것과 비슷한 오류가 발생할 수 있습니까?
Windows에서 표준 DLL 진입 점의 이름은 DllMain입니다. 두 번째 매개 변수는 DWORD, ul_reason_for_call입니다. MSDN에서이 두 번째 매개 변수에 사용할 수있는 값을 조회했습니다. 다음 명백하다 : DLL_PROCESS_ATTACH:
DLL_THREAD_ATTACH:
DLL_THREAD_DETACH:
DLL_PROCE
임 RobertGiesecke 하여 UnmanagedExports를 사용하여 나는 지금 내가 LoadLibrary를 호출하지만 아무 일도 내가 [DllExport("DllMain", CallingConvention.StdCall)]
public static bool DllMain(IntPtr hModule, uint dwReason, byte[]
진입 점 ... 내가 하나 첨부 얻을 [DllImport(@"My.dll", EntryPoint = "Function1", CallingConvention = CallingConvention.Cdecl)]
public static extern bool MyFunction(int id1, int id2, [MarshalAsAttribute(Unma
I 메모리에서 DLL에서 다음과 같은 정보를 조회 할 : 진입 점 (DllMain?!) DLL을의 코드 섹션의 주소와 크기의 정확한 주소 각 보낸 된 함수 의 진입 점의 주소 나는 엔트리 포인트를 조회 할 PSAPI 기능에서 GetModuleInformation()을 사용했다. 그러나 MSDN에 따르면 "이것은 DllMain 함수의 주소가 아닙니다." 이