首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LoadLibrary,一种从外部dll实例化类的方法?

LoadLibrary,一种从外部dll实例化类的方法?
EN

Stack Overflow用户
提问于 2011-08-29 14:30:04
回答 1查看 852关注 0票数 0

我用d-7写了一个动态链接库。它工作正常。它在应用程序启动时加载,在应用程序存在时卸载。

现在,该dll还必须在该应用程序的服务器端工作,因为服务器是基于COM+技术的,所以它是从com+代理(dllhost.exe)加载的。

问题是一个进程可能只有一个用于加载库的句柄。我不能在每个LoadLibrary调用上有单独的句柄。

在com+中,一个dllhost.exe可以服务多个客户端,这意味着如果我加载一个外部库,它会为每个客户端调用提供相同的实例。

所以:

1)是否有可能以某种方式解决此问题?

2)或者是否可以为每个客户端调用直接创建驻留在此dll中的类的实例?

3)或者如何通过为每个调用实例化一个内部类来使dll线程安全。

感谢您提前给我们提建议!

EN

回答 1

Stack Overflow用户

发布于 2011-08-29 22:14:07

由于DLL使用调用它的线程/进程的本地内存,我不确定您是否真的会遇到“问题”。您不希望让DLL维护某些全局信息,因为这只会导致线程噩梦。

定义返回TWhatever对象的函数,让DLL创建该对象( TWhatever.Create() )并将其返回给调用进程。然后由调用进程来释放该对象。如果您需要COM+兼容性,那么应该可以使用接口引用(IWhatever)并从您的函数中返回它。

如果每个线程都处理自己的对象实例(或接口引用),那么您可以让DLL为任意多个线程和进程提供服务。

你的问题把我弄糊涂了,所以我不确定我是否回答对了。:p

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7226848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档