我在我的软件中使用供应商提供的 DLL 文件,DllImport例如:[DllImport("Supplier.dll", EntryPoint = "AllocateHandle")]private static extern bool AllocateHandle(out uint handle, string connectionDetails);[DllImport("Supplier.dll", EntryPoint = "DeallocateHandle")]private static extern bool DeallocateHandle(uint handle);...使用该AllocateHandle方法,我可以通过提供连接详细信息来检索句柄。然后,我可以使用该句柄来调用我所连接的远程计算机上的方法。DeallocateHandle取消分配该句柄。供应商说这是必要的。我们发现可以使用相同的连接详细信息检索多个句柄。(例如AllocateHandle("10.1.1.1"); AllocateHandle("10.1.1.1");)那行得通。只是,如果句柄已经存在,我们就无法检索具有不同连接详细信息的句柄。(例如AllocHandle("10.1.1.1"); AllocateHandle("10.1.1.2");)。但是,当我这样做时,它会起作用:[DllImport("Supplier.dll", EntryPoint = "AllocateHandle")]private static extern bool AllocateHandle(out uint handle, string connectionDetails);[DllImport("Supplier2.dll", EntryPoint = "AllocateHandle")]private static extern bool AllocateHandle2(out uint handle, string connectionDetails);AllocateHandle("10.1.1.1"); AllocateHandle2("10.1.1.2");但每当我们需要更多连接时,我们就必须重新编译。有没有办法无需复制 DLL 文件即可实现此目的?
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
您可以将同一非托管库的多个实例加载到进程中,但必须使用不同的文件名加载它们。在您的场景中,这可能意味着每次需要新实例时都使用临时文件名制作 DLL 的副本。
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消