asp.net(c#) DllImport不能引用Bin的dll,必须全路径,这是为什么?

sibad_sh 2009-03-27 08:56:58
[DllImport(@"D:\Website\Bin\tt.dll", CallingConvention = CallingConvention.StdCall)]是正确的,

而[DllImport(@"tt.dll", CallingConvention = CallingConvention.StdCall)]
或[DllImport("tt.dll", CallingConvention = CallingConvention.StdCall)]
都不正确,请教下。
...全文
1698 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
彭金华 2011-07-22
  • 打赏
  • 举报
回复
着急中。。。
BruceLin2008 2010-02-24
  • 打赏
  • 举报
回复
调用VC 中的DLL,如果DLL中是用类写的,DllImport要怎么写呢?网上有的例子都是dll中写方法,然后DllImport调用,没见过用类写的dll的调用方法,请教一下各位。
aiguo123434 2009-12-31
  • 打赏
  • 举报
回复
ding
jietuan 2009-03-30
  • 打赏
  • 举报
回复
如果你要这要放到虚拟服务器上,如果tt.dll是.net版本,你可以用Assembly.Load;如果是其它的你必须要注册,虚拟服务器应该提供这些服务的,你想虚拟服务提供商咨询一下。
sibad_sh 2009-03-30
  • 打赏
  • 举报
回复
private static string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";
[DllImport(DLLPath)]
....
CS0182: 属性参数必须是常量表达式、typeof 表达式或数组创建表达式


private const string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";
[DllImport(DLLPath)]
....
CS0134: “Path”的类型为“string”。只能用 null 对引用类型(字符串除外)的常量进行初始化


哈哈潜伏哥 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sibad_sh 的回复:]
C# code
string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";
[DllImport(Path, CallingConvention = CallingConvention.StdCall)]
...


提示错误:

说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0120: 非静态的字段、方法或属性“WebApplicationTest._Test1.Path”要求对象引用
[/Quote]

你将这句string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";
改为private static string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";

应该就没问题了,可以不用复制到System32目录下去。
java_renyusheng 2009-03-30
  • 打赏
  • 举报
回复
现在答题的都怎么了,都为了混个分????没看见搂主说:
[Quote=引用 4 楼 sibad_sh 的回复:]
我的应用需要放在虚拟服务器上,总不能让网管帮我将dll拷贝到system32目录下面吧?
请问你们是怎么做的?谢谢了!
[/Quote]
java_renyusheng 2009-03-30
  • 打赏
  • 举报
回复
在系统的环境变量中添加dll所在的路径
zgke 2009-03-30
  • 打赏
  • 举报
回复
这个是跟你IIS的目录有关系..放到系统目录 SYSTEM32下 可以直接使用.
zzxap 2009-03-30
  • 打赏
  • 举报
回复
将dll拷贝到system32目录,注册一下
wts_net 2009-03-30
  • 打赏
  • 举报
回复
不然反射不到的,要不就拷到固定目录下
sxmonsy 2009-03-30
  • 打赏
  • 举报
回复
dll的默认路径是windows\system32下面.你要是不指定它的路径他会自动去这里去找,当然找不到就会出错了.
悔说话的哑巴 2009-03-30
  • 打赏
  • 举报
回复
这个没有做过 帮顶
a260881071 2009-03-30
  • 打赏
  • 举报
回复
多分
yulien 2009-03-30
  • 打赏
  • 举报
回复
ding
ZJ159 2009-03-29
  • 打赏
  • 举报
回复
sibad_sh 2009-03-29
  • 打赏
  • 举报
回复
我的应用需要放在虚拟服务器上,总不能让网管帮我将dll拷贝到system32目录下面吧?
请问你们是怎么做的?谢谢了!
优途科技 2009-03-29
  • 打赏
  • 举报
回复
sibad_sh 2009-03-27
  • 打赏
  • 举报
回复
string Path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "tt.dll";
[DllImport(Path, CallingConvention = CallingConvention.StdCall)]
...

提示错误:

说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0120: 非静态的字段、方法或属性“WebApplicationTest._Test1.Path”要求对象引用
sibad_sh 2009-03-27
  • 打赏
  • 举报
回复
因为我的Dll用vc写的,不太可能将它放置在system32目录下的,
能否不需要全路径的方式呢?
加载更多回复(1)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧