dllimport路径问题】的更多相关文章

今天做了个试验,是针对dllimport("XXX.DLL");这样写的时候,系统是如何寻找该dll的. 首先系统会搜寻主应用程序根目录. 其次搜寻操作系统安装目录,一般情况是C:\\WINDOWS\\SYSTEM32\\路径. 再者是程序代码中,Directory.SetCurrentDirectory("路径")用该语句指定的应用程序工作目录中去找 最后,程序会去环境变量中搜寻该DLL.…
原文:C# DllImport 相对路径无法找到dll DllImport DLL查找顺序:1.应用程序所在目录2.Windows目录和Windows\System32目录3.环境变量目录 只需要你把引用的DLL 拷贝到这三个目录下 就可以不用写路径了 最后的解决办法:动态设置当前进程的环境变量,把sdk所在的目录添加到环境变量中,这其内部就可以找到自己的dll了 /// <summary> /// 添加环境变量 /// </summary> /// <param name=…
这次项目需要,做了一个C#写的WebService服务给外部调用,服务内部引用了算法库,本地调试已经通过,现场部署服务时各种提示找不到DLL文件. 第一.如果是包含有32位库在64位服务器系统上运行,会有一个运行时错误,64位的IIS默认“应用程序池”不启用32位支持,需要去“高级设置”里启用32位支持 第二.找不到Dll处理方法: 网上查到的Dllimport路径相关: DllImport会按照顺序自动去寻找的地方:1.exe所在目录2.System32目录3.环境变量目录 三种都试过没用,依…
最近使用DllImport,从网上google后发现,大部分内容都是相同,又从MSDN中搜集下,现将内容汇总,与大家分享. 大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能. DllImport是System.Runtime.InteropServices命名空间下的一个属性…
C#.Net调用基本格式:[DLLImport(“DLL文件路径”)]修饰符 extern 返回值类型 方法名称(参数列表) 如: [DllImport("kernel32.dll", SetLastError = true, EntryPoint = "SetLocalTime")] public static extern int SetSystemTime(ref SystemTime lpSystemTime); PS:1.DLL文件必须位于程序当前目录或系…
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息.    DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.    DllImport的定义如下: [AttributeUsage(AttributeTargets.Method)] public class DllImportAttribute: System.Attribute { public DllImportA…
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息.    DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.    DllImport的定义如下:[AttributeUsage(AttributeTargets.Method)]   public class DllImportAttribute: System.Attribute   {   public DllIm…
原文:C# DllImport 相对路径无法找到dll 如题,近期在开发过程中,需要调用C++的库,一般来说,使用下面的方法即可正常调用: [DllImport("hci_sys.dll", CallingConvention = CallingConvention.StdCall)] public static extern int hci_init(string initConfig); 这个只要的需要的库文件放到根目录就可以了,但如果啥文件都往根目录放,那就显得比较杂乱无章,而且…
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称. DllImport的定义如下: [AttributeUsage(AttributeTargets.Method)] public class DllImportAttribute: System.Attribute { public DllImportAttribu…
c# 利用动态库DllImport("kernel32")读写ini文件 自从读了设计模式,真的会改变一个程序员的习惯.我觉得嘛,经验也可以从一个人的习惯看得出来,看他的代码编写习惯能看出一个程序员的经验.说啥呢,为啥又会说说设计模式去了呢,好吧,咱是来讨论读写ini文件的. 为什么要来讨论读写ini文件呢,难道有数据库我们就不用读写文件了吗,什么数据都从数据库读取出来吗,有些东西是根据客户的习惯,就没必要去读取数据库了,或者说,比如你要做一个记住密码的功能,如果在web端,你还可以用…
DllImport会按照顺序自动去寻找的地方: 1.exe所在目录 2.System32目录 3.环境变量目录所以只需要你把引用的DLL 拷贝到这三个目录下 就可以不用写路径了 或者可以这样server.MapPath(.\bin\*.dll)web中的,同时也是应用程序中的 后来发现用[DllImport(@"C:\OJ\Bin\Judge.dll")]这样指定DLL的绝对路径就可以正常装载. 这个问题最常出现在使用第三方非托管DLL组件的时候,我的也同样是这时出的问题,Asp.Ne…
1. 昨天开发中遇到一个问题,场景如下: 客户端从服务器下载一个文件并解压,客户端在使用后需要做清理操作(删除解压出来的文件),结果删除失败,抛出如下异常: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 character…
一.DLL放在指定目录 在编写C# winform程序中,不免一个项目会有多个工程文件,而这些工程文件之间是相互引用的,所以不想将工程的生成结果(exe或者dll)放在当前工程bin目录下的Debug目录或者Release目录,而是放在一个公共的目录下,比如DLLImport目录下,如何实现这个工程呢,我们知道,如果是C++,我们可以使用cmake来部署我的项目,同样在c#中也可以实现这样的功能,我们只需在每个工程的“属性”----“生成事件”----“生成后事件命令行”写入如下代码即可: IF…
网站制作开发中,URL的绝对路径和相对路径之间互相转换,是经常需要用到的.以下是在C#.Net下一种实现二者互相转化的方法: [DllImport("shlwapi.dll", CharSet = CharSet.Auto)]        public static extern bool PathRelativePathTo(               [Out] StringBuilder pszPath,               string pszFrom,      …
一. 获取执行程序所在路径 1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory;  //获取的是主程序目录,线程启动的子程序内获取的路径也是主程序的工作目录 Result: C:\xxx\xxx 2.获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称. string str = System.Windows.Forms.Application.StartupPath; //exe 执行目录 Resul…
最近做一个动态加载插件的项目,插件中的dll 主要是各厂商各型号的读卡器的通用类库,stdapi.dll,WltRS.dll,有的还有进一步封装的dll,主要是为了简化通用类库的操作. 这些类库都是用C语言,或者C++来编写的,我的项目是用C#语言编写,通过Dllimport来调用这些非托管dll的方法. 在做这个项目的时候,由于之前的读卡器类库都是通用的,所以即时使用两款或者更多款读卡器设备,加载的都是同一类dll,不会出现问题. 但是在开发与通用类库不兼容的插件的时候(都是读卡器插件),问题…
虽然是古老的问题,最近用到这个,查一下还不少东东呐 一.使用Environment.SpecialFolder 该方法最简单,直接使用即可,只是提供的特殊路径比较少. (1)使用方法:string path = Environment.GetFolderPath(Environment.SpecialFolder.Programs); (2)获取参数: foreach (Environment.SpecialFolder s in                    Enum.GetValue…
最近在做一个sdk二次开发的项目,具体是将一个C++开发的SDk用C#将它的API接口全部封装一遍,然后再做一个demo就好了 好不容易封装完了,在使用的时候出了问题.原来SDK中的dll老是加载不到.不是路径的问题,因为所有可能的路径我都试过了.问题是,C#引用的C++的那个dll又引用了一个dll,而我没有把第二个dll放到能找到的路径下.所以,就坑了我半天. C#直接引用的那个dll可以放到System32路径下,也可以放到有程序入口的项目的debug下.至于进一步所引用的dll,也可以放…
想用C#得到The All Users Desktop(Public\Desktop)的路径. 原来以为很简单,然而 Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 只能得到当前用户的桌面路径.到最后,没有办法,只能调用C++的函数: [DllImport("shfolder.dll", CharSet = CharSet.Auto)] private static extern int SHGetFolderP…
大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如 Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家 可以通过C#中的DllImport直接调用这些功能.DllImport所在的名字空间 using System.Runtime.InteropServices;MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法.DllImportAttri…
在 C# 中通过 P/Invoke 调用Win32 DLL http://msdn.microsoft.com/zh-cn/library/aa686045.aspx   大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如 Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家 可以通过C#中的DllImport直接调用这些功能.DllImport所在的名字空间 using Sy…
 /// <summary>         ///    返回本机的mac物理路径         /// </summary>         /// <returns></returns>         private string GetMac()         {             string mac = null;             //[DllImport("System.Management.dll")]…
原文 C#获取桌面壁纸图片的路径(Desktop Wallpaper) 利用 Windows 的 API 获取桌面壁纸的实际路径,使用的是 SystemParametersInfo 这个API,此API的功能非常丰富,壁纸操作只是一斑 . using System.Runtime.InteropServices; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bo…
前言 标题不知道怎么确切地命名,在.net的托管世界里,有时不得不使用c的某个动态库,比如ocr.opencv等,如果幸运,有前人已经包装出.net版本,但有些不非常流行的库,只能自己使用pinvoke或c++ cli包装了,比如笔者就遇到了一个,mqtt客户端库. Pinvoke的多平台问题 如果您没有接触过如何调用非托管dll,没有了解过c#的DllImportAttribute,可以看看以下资料: 1.DllImportAttribute 2.Pinvoke 3.extern 关键字 多平…
昨天写的博客,将C#读取shp中文属性值乱码的问题应该可以解决,博客地址为:http://blog.csdn.net/liminlu0314/article/details/54096119,然后又测试发现中文路径,中文属性值如果有中文时,也会出现乱码,具体表现为偶数个汉字没有问题,奇数个汉字会出现乱码. 继续调试C#的源码,发现问题还是在于将C++库中返回的结果进行编码转换的时候导致的,源码位于OgrPINVOKE.cs文件中.截取原始的代码如下: protected class SWIGSt…
编译GDAL过程比较繁琐,查阅了网上相关资料,同时通过实践,完成GDAL的编译,同时解决了SHP数据中文路径及中文字段乱码的问题,本文以“gdal-2.3.2”版本为例阐述整个编译过程. 一.编译准备 1.编译工具是VS2017,编译前需要下载“gdal-2.3.2”和“swigwin-3.0.12”,下载链接如下: GDAL:http://trac.osgeo.org/gdal/wiki/DownloadSource swigwin:https://sourceforge.net/projec…
1.Dll引用路径 (1)exe运行程序所在的目录 (2)System32目录 (3)环境变量目录 (4)自定义路径,如:DllImport(@"C:\OJ\Bin\Judge.dll") 2..DllImport用法 [DllImport("User32.dll")] private static extern IntPtr GetWindowDC(IntPtr hwnd);  //找到User32.dll后直接调用其中的GetWindowDC()方法 [DllI…
单要说这个Bug是很简单,但是得从头说起. 一些大型的网络游戏,或者加载比较多的一些场景时,如果要等待所有模型,贴图等各种资源文件加载完毕才能执行游戏,对用户将会是一个很头大的事情.所以就需要用到动态加载,即AssetBundles. 引用自:http://bbs.9ria.com/thread-214663-1-1.html AssetBundle基本概念就如上面所讲,虽然我正开发的项目不是大型网络游戏,但是也涉及到在线更新,所以也使用到AssetBundle.准确说是动态加载. 项目最初没有…
这里地址的方法也是可用的,但是net3.5不能使用 为此我选择使用win32api的方式来遍历当前桌面所有资源管理器 /// <summary> /// 不重复打开dwg路径的资源管理器 /// </summary> [CommandMethod("JJ_OpenDwgFilePath")] public static void JJ_OpenDwgFilePath() { Database db = HostApplicationServices.Workin…
返回“我的文档”路径字符串 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 本技巧使用GetFolderPath方法来获取指向由指定枚举标识的系统特殊文件夹的路径.语法格式如下: public static string GetFolderPath (SpecialFolder folder) 参数folder标识系统特殊文件夹的枚举常数. 如果指定系统的特殊文件夹存在于用户的计算机上,则返回到该文件夹的路径:否则为空字…