【这个问题可难倒我了,帮帮我吧】如何动态调用一个DLL文件。

MS_Frank 2009-03-18 03:48:38
如题,.NET CF 2.0环境,运行于Windows Mobile中。
我有一个自己编写的Win32 DLL 我现在想注册它(其实就是调用它的导出函数DllRegisterServer)
DLL和EXE程序在同一目录下,并且必须在同一目录下,我不想把它放到系统目录(\Windows)下。

我试过用
[DllImport("CallbackAssistant.dll")]
private static extern int DllRegisterServer();

如果在.NET FW中DllImport会首先在当前EXE所有目录查找指定的DLL,然后再是系统目录,最后是环境变量的目录。
可是在.NET CF中只支持在系统目录中查找。

因为找不到DLL文件,于是这种方法我就失败了。。


然后我又想到用LoadLibrary/GetProcAddress来调用DLL
LoadLibrary加载-->GetProcAddress成功返回函数指针。
可是到了要调用的时候,一般我们不都是常用Marshal.GetDelegateForFunctionPointer将函数指针转换成委托再调用吗,

可是TMD的.NET CF这个函数也不支持,我一下就郁闷了,想注册这个DLL,我真是没有办法 。

特此来求助大家!!!
...全文
109 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
继续顶。。。

高手快来啊。
swzhenhao 2009-03-18
  • 打赏
  • 举报
回复
盖楼
zgke 2009-03-18
  • 打赏
  • 举报
回复
[DllImport("\路径\CallbackAssistant.dll")]
能指定路径不?
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
如果取巧的话,当然很简单,,方法很多。
比如用C++写一个注册程序,来注册那个DLL,这不比楼上几位说的方法好,还不用移动DLL。。

可是我不想用取巧的方法,我只是想解决这个技术问题。
我想看看,.NET CF倒底能不能实现这个功能。
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Teng_s2000 的回复:]
引用 9 楼 Guyschaos 的回复:
引用 7 楼 MS_Frank 的回复:
引用 6 楼 Guyschaos 的回复:
那你就放到系统目录里好了,这有多大关系吗?


关键我的程序不只一个DLL,再者我不想把一大堆东西放到系统目录内,感觉很别扭!!

就因为别扭就要把简单的事搞复杂了吗?用户会管你把DLL放在哪里了啊?

没有玩过CF
不过这位兄弟说的对,用户只要找到程序入口就行,不会关心你的dll放哪儿或者你的代码怎么实现啊!

放…
[/Quote]

如果有上百个DLL(我是说比如啊)也要都放在系统目录内吗?就算能,这终归不是一个解决的办法。。

我现在想说的就是,怎么能解决这个技术问题!!!
Teng_s2000 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Guyschaos 的回复:]
引用 7 楼 MS_Frank 的回复:
引用 6 楼 Guyschaos 的回复:
那你就放到系统目录里好了,这有多大关系吗?


关键我的程序不只一个DLL,再者我不想把一大堆东西放到系统目录内,感觉很别扭!!

就因为别扭就要把简单的事搞复杂了吗?用户会管你把DLL放在哪里了啊?
[/Quote]
没有玩过CF
不过这位兄弟说的对,用户只要找到程序入口就行,不会关心你的dll放哪儿或者你的代码怎么实现啊!

放到GAC中看看行不行啊
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
谢谢,我也继续顶。。。

高手快来啊。
贫僧又回来了 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 MS_Frank 的回复:]
引用 6 楼 Guyschaos 的回复:
那你就放到系统目录里好了,这有多大关系吗?


关键我的程序不只一个DLL,再者我不想把一大堆东西放到系统目录内,感觉很别扭!!
[/Quote]
就因为别扭就要把简单的事搞复杂了吗?用户会管你把DLL放在哪里了啊?

kbtjh 2009-03-18
  • 打赏
  • 举报
回复
帮顶一下
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Guyschaos 的回复:]
那你就放到系统目录里好了,这有多大关系吗?
[/Quote]

关键我的程序不只一个DLL,再者我不想把一大堆东西放到系统目录内,感觉很别扭!!
贫僧又回来了 2009-03-18
  • 打赏
  • 举报
回复
那你就放到系统目录里好了,这有多大关系吗?
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
谢谢,帮忙顶起来吧,希望能有高手能来解决!!
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
同情你,帮顶一下
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
是啊,我对CF是彻底的失望了,,简直了,就是个鸡肋。。。。
zgke 2009-03-18
  • 打赏
  • 举报
回复
帮顶把
CF 实在是...哎...
MS_Frank 2009-03-18
  • 打赏
  • 举报
回复
或者怎么可以用DllImport指定绝对路径呢?
DLL的绝对路径得是程序运行后才能获取的,所以也不能事先写死了的。

110,499

社区成员

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

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

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