从.Net托管代码加载32或64位DLL
发布时间:2020-12-13 20:36:43 所属栏目:Windows 来源:网络整理
导读:我有一个非托管DLL(scintilla代码编辑器的scilexer.dll,由Scintilla.Net从 CodePlex使用),它是通过Scintilla.Net组件从托管应用程序加载的. Windows托管应用程序在32位和64位环境中运行没有问题,但我需要创建使用64或32 scilexer.dll的不同安装. 有没有办法
我有一个非托管DLL(scintilla代码编辑器的scilexer.dll,由Scintilla.Net从
CodePlex使用),它是通过Scintilla.Net组件从托管应用程序加载的. Windows托管应用程序在32位和64位环境中运行没有问题,但我需要创建使用64或32 scilexer.dll的不同安装.
有没有办法以32位和64位格式分发这两个DLL,以便.Net框架的DLL加载器加载32或64位格式的非托管DLL,具体取决于某些.config选项或一些“路径名称魔术”的东西?
P / Invoke使用LoadLibrary加载DLL,如果已经加载了给定名称的库,LoadLibrary将返回它.因此,如果您可以为这两个版本的DLL提供相同的名称,但将它们放在不同的目录中,您可以在第一次从scilexer.dll调用函数之前执行此类操作,而无需复制您的extern声明:
string platform = IntPtr.Size == 4 ? "x86" : "x64"; string dll = installDir + @"lib-" + platform + @"scilexer.dll"; if (LoadLibrary(dll) == IntPtr.Zero) throw new IOException("Unable to load " + dll + "."); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- laravel – npm在vagrant / homestead / windows上安装错误
- 如何获取应用程序的Windows任务栏按钮以显示进度条的进度
- 无法在Windows7中运行conda install -c menpo opencv3 = 3.
- windows-8 – VariableSizedWrapGrid和WrapGrid儿童大小测量
- 在Windows上启用Nginx上的http2
- 如何清理microsoft html doc?
- Windows Server 2016-Hyper-V 2016新增功能
- windows – 每个应用程序配置文件bindingRedirect不适用于D
- DirectX11 With Windows SDK--23 立方体映射:动态天空盒的
- .net – PresentationCore.dll中出现’System.StackOverflo
推荐文章
站长推荐
- 使用CMake生成的DLL和奇怪的重复模板的不正确行为
- windows-server-2008-r2 – 在任务计划程序库中仅
- windows-10-universal – WPF XAML在UWP边缘问题
- 在Windows上运行旧版应用程序
- (一个Windows人员问)在Linux上测量磁盘延迟:我是
- Windows – 桌面上的绘图线在Win 7上非常慢
- group-policy – 在Windows 10 Pro上禁用Microso
- windows-7 – 为什么我的log4net日志条目不会出现
- windows – 线程ID与线程句柄
- windows-server-2008 – Windows 2008 R1上的IIS
热点阅读