如何控制DLL何时被分离

时间:2011-07-07 18:03:36

标签: c# c++ dll import export

我有一个DLL,我想添加到我的C#项目,我有一些问题。首先,我的DLL用C ++编码,我有一个函数的接口来导出它。

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

我有一个实例“ps”,它在连接DLL时初始化套接字。关键是我需要在调用导出的函数时初始化此实例。我的问题是当我在我的C#项目中导入它时,我的DLL被分离,没有明显的原因,我不能再调用我的导出函数。

我在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();

我尝试了一些重要的事情:

  1. 在项目的引用中导入DLL:不能,因为它不是COM组件。
  2. 使用LoadLibrary,FreeLibrary和GetProcAddress手动导入DLL:结果相同
  3. 在循环中调用我的导出函数:同样的事情,但DLL在分离之前连接了一段时间。
  4. 我想知道为什么我的DLL正在分离,如何在其余的处理生命中保持它的附加。

    非常感谢

1 个答案:

答案 0 :(得分:0)

您的DLL本身可能会发生异常。使其在Visual Studio中分离以防止应用程序崩溃。毕竟C#是托管代码。

尝试使用具有非常简单功能的不同(虚拟)dll执行相同的过程。如果它仍然出现,则表示您的方法有问题,否则使用您尝试使用的DLL。