社区
C#
帖子详情
关于dll的动态引用
epoluodi
2003-09-05 12:34:26
在com+的时代,引用一个com组件可以用菜单里面的引用,也可以动态的用createobject这个方法引用,这样当一个com组件不在的时候程序不会报错!
这是不是后期邦定!
那么现在在.net中编译的dll我想在其它的程序中引用是否可以动态的引用。
这样当这个dll不在的时候程序也可以运行!
...全文
18
10
打赏
收藏
关于dll的动态引用
在com+的时代,引用一个com组件可以用菜单里面的引用,也可以动态的用createobject这个方法引用,这样当一个com组件不在的时候程序不会报错! 这是不是后期邦定! 那么现在在.net中编译的dll我想在其它的程序中引用是否可以动态的引用。 这样当这个dll不在的时候程序也可以运行!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
好运
2003-09-05
打赏
举报
回复
.net中的如果没有引用编译通不过
ArLi2003
2003-09-05
打赏
举报
回复
//晕菜,回错贴了,不过这个例子也可以解释成 DLL 引用
//c# version if u can't unsafe
Module m = Assembly.GetExecutingAssembly().GetModule("myDLL.dll");
hHook = SetWindowsHookEx(WH_CBT,CBTProc,(HINSTANCE)Marshal.GetHINSTANCE(m).ToInt32(),NULL);
ArLi2003
2003-09-05
打赏
举报
回复
Module* mud = Assembly::GetExecutingAssembly()->GetModule("mydll.dll");
hHook = SetWindowsHookEx(WH_CBT,CBTProc,
(HINSTANCE)Marshal::GetHINSTANCE(mud).ToPointer(),NULL);
ArLi2003
2003-09-05
打赏
举报
回复
其实编写时引用也是可行的,如果你没有激活它的构造函数的话(没有实例化或静态调用)是不会影响到主程序体的,一样的运行,直到实例或静态调用时才会出错误提示(由jit 提供)
白掌柜
2003-09-05
打赏
举报
回复
这里有:
关于动态引用
http://developer.ccidnet.com/pub/disp/Article?columnID=340&articleID=8719&pageNO=1
ArLi2003
2003-09-05
打赏
举报
回复
引用时存在(可以选择不复制本地)可以通过编译,或者用 csc /r 来指定
编译后但它在运行时不存在时,将在实例化时出现错误提示,如果你没有在主form 上实例化它是没有关系的
动态调用可以用:
Assembly subAppAssembly = Assembly.LoadFrom(DLLFILENAME);
object newObject = subAppAssembly.CreateInstance(TYPEFULLNAME);
其中TYPEFULLNAME是你的namespace.class
也可以使用交叉引用,比如 myobj2 是 mewobject 的一个父集或者接口
myobj2 m = new myobj2(); type TYPEFULLNAME= m.GetType();
string mypath = Path.Combine(Application.StartupPath,"mewobject.dll");
Assembly subAppAssembly = Assembly.LoadFrom();
object newObject = subAppAssembly.CreateInstance(TYPEFULLNAME);
timmy3310
2003-09-05
打赏
举报
回复
可以动态引用,如:
System.Reflection.Assembly dll = System.Reflection.Assembly.LoadFrom("C:\\test.dll");
但是你在设计期不引用的话,不能够使用该Dll中定义的类型信息;不过通过设计一些接口还是可以做到的,比如,上面的test.dll中定义了一个:
namespace TestNamespace {
public class TestClass : ITest {
public TestClass() {}
public void GetTestString()
{
return "Hello";
}
}
}
ITest在其他地方(如应用程序和test.dll都引用的公用模块中)定义:
public interface ITest {
void GetTestString();
}
那么在应用程序中可以这样做:
System.Reflection.Assembly dll = System.Reflection.Assembly.LoadFrom("C:\\test.dll");
Type t = dll.GetType("TestNamespace.TestClass");
ITest obj = (ITest)Activator.CreateInstance(t);
string result = obj.GetTestString();
你可以看看我的文章:
http://expert.csdn.net/Expert/TopicView1.asp?id=2214138
epoluodi
2003-09-05
打赏
举报
回复
楼上详细说明一下阿!
ms44
2003-09-05
打赏
举报
回复
可以在需要的地方才直接引用啊:
System.Runtime.等等都可以啊
rqxiang
2003-09-05
打赏
举报
回复
赞成楼上!编译通过不了!!
Depends.Exe
Depends用来显示与一个可执行文件(exe或者
dll
)相关的依赖项(
dll
),以及该exe或
dll
引用
了这些
dll
中的哪些接口。 同时也可以看到每个被依赖的
dll
中的所有导出的函数接口。
C#中
DLL
动态
库的使用
C#中
DLL
动态
库的使用
VS2015中
引用
动态
链接库
dll
目录的配置方法
法1:配置属性->调试-&...【注意】path(空格)=路径、path=(空格)路径、path(空格)=(空格)路径等写法都会导致
dll
引用
失败。 法2:将
dll
文件拷贝到生成的.exe所在的文件夹中...
C#
动态
引用
DLL
的方法
C#编程中,使用
dll
调用是经常的事,这样做的好处是非常多的,比如把某些功能封装到一个
dll
中,然后主程序
动态
调用这个
dll
。 废话不多说,举例说明如下。 首先,我们需要封装一个
dll
,vs2008下建立一个...
DLL
动态
链接库分包
引用
及延迟加载使用
DLL
动态
链接库分包
引用
及延迟加载 1.为什么要分包 最近项目中有应用到比较多的项目
dll
和第三方
dll
,之前是都放在exe的平级目录下的,当
dll
多到一定程度时,会非常的乱。有一些库已经没有用到了,但由于第三方库直接...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章