C#的Dllimport能不能调用指定路径的dll文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#的Dllimport能不能调用指定路径的dll文件?相关的知识,希望对你有一定的参考价值。

由于CE设备上的系统定制的组件不完整, 于是自己定制了一个. 但烧录的工作没有联系好, �0�2所以我想使用自己的coredll.dll而不是系统自带的, 请问有没有办法用DllImport来调用我这个dll文件?

C#的Dllimport不能直接调用指定路径的dll文件,可以使用以下几种方法调用dll文件:

一、把引用的DLL 拷贝到以下DllImport会自动去寻找的这三个地方:

1、exe所在目录;

2、System32目录;

3、环境变量目录。

二、可以直接在项目的引用里添加DLL文件。

参考技术A DllImport会自动去寻找的地方:
1、exe所在目录
2、System32目录
3、环境变量目录
你把引用的DLL 拷贝到这三个目录下或者可以这样server.MapPath(.\bin\*.dll)再或者你可以在项目的引用里添加你的DLL文件。
参考技术B dllimport可以使用绝对路径

DllImport(@"C:\OJ\Bin\Judge.dll")

也要以使用相对路径

DllImport(@"..\dll\Judge.dll")
参考技术C 完全可以 你可以自己用C或C++编写dll在C#调用 参考技术D 确实. 后来发现是SDK中缺少了我需要的组件, 自己定制一个或者下载其他的SDK就解决问题了.

c# dllimport怎么弱引用

参考技术A 第一种方法:使用LoadLibrary和GetProcAddress配合,这种方法称为弱引用,其优点是可以跨编译器使用,也就是用vs2008编译的dl,使用时候,到vs2010下代码可以直接用。缺点是不能使用导出的类
第二种方法:引用CommonDll.lib来引用,这种方法的优缺点就和弱应用刚好互补,优点是使用方便,可以使用导出的类,缺点是vs2008编译出来的lib,到vs2010或者其他版本的编译器就有可能不能使用。
这种方法对于强引用来说,在编译CommonDll.dl时
候,在预处理器里定义了宏▁COMMON,这样就会导
出对应的函数和类
当引用CommonDll.lib时候,没有定义_Common,一COMMON_EXPORT就成了dllimport,它就会把lib导出的函数导入

以上是关于C#的Dllimport能不能调用指定路径的dll文件?的主要内容,如果未能解决你的问题,请参考以下文章

c#调用c++写的dll,用dllimport后说啥 找不到指定模块。这个问题你是怎么解决的

C# 中dllimport 调用不同文件夹终极方法

C# 中dllimport 调用不同文件夹终极方法

c# dllimport怎么弱引用

C#中引用dll的问题

在同一解决方案中从 c# 项目到 c++ 项目的 DllImport