开发者

How can I control when a DLL is detached

I got a DLL that I want to add to my C# project and I have some problems. First, my DLL is coded in C++ and I got an interface of one function to export it.

extern "C" __declspec(dllexport) char* sniff() 
{
    return ps.Sniff();
}

I have an instance "ps" that initialise a socket when the DLL is attached. The point is that I need to have this instance initialise when I call my exported function. My problem is when I import it in my C# project, my DLL is detached for no apparent reason and I can no longer call my exported function.

I use this syntax in my C# projet :

[DllImport(@"C:\Documents and Settings\Pat\Bureau\sniffoporn\Release\sniff.dll", EntryPoint = "sniff", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern IntPtr sniff();

Some important things that I tryed :

  1. Import the DLL in the reference of the project : Can't because it's not a COM component.
  2. Manually import the DLL using LoadLibrary, FreeLibrary and GetProcAddress : Same result
  3. Call my exported function in loop : S开发者_如何转开发ame thing but the DLL is attached for a little longer before detaching.

I would want to know why my DLL is detaching and how can I keep it attached for the rest of the process life.

Thanks a lot


Maybe an exception occurs in your DLL itself. Making it detach in Visual Studio to prevent your application from crashing. After all C# is managed code.

Try your same procedures with a different (dummy) dll with very simple functionality. If it still occurs then something with your method is wrong, otherwise with the DLL you are attempting to use.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜