.net 导入 DLL

转载 2006年06月13日 10:55:00

由于VC 6.0编写的DLL没有自描述,所以无法像C#.net编写的DLL一样直接引用调用,一般可以采用两种方法调用。
一、注册成COM组件:用命令regsvr32 DllFilePath进行注册,然后引用到项目。
二、一些非COM组件的DLL文件可以在程序中用如下格式,将其中需要调用的函数一个一个的引用声明出来。一些数据格式的对应见下表。
基本格式:[DllImport("DllFilePath",...)]
                    public static extern void function_name(datetype args,...);
DllImport 属性具有下列行为:
它只能放置在方法声明上。
它具有单个定位参数:指定包含被导入方法的 dll 名称的 dllName 参数。
它具有五个命名参数:
 CallingConvention 参数指示入口点的调用约定。如果未指定 CallingConvention,则使用默认值CallingConvention.Winapi。
CharSet 参数指示用在入口点中的字符集。如果未指定 CharSet,则使用默认值 CharSet.Auto。
EntryPoint 参数给出 dll 中入口点的名称。如果未指定 EntryPoint,则使用方法本身的名称。
ExactSpelling 参数指示 EntryPoint 是否必须与指示的入口点的拼写完全匹配。如果未指定ExactSpelling,则使用默认值 false。
PreserveSig 参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有HRESULT 返回值和该返回值的一个名为 retval 的附加输出参数的签名。如果未指定 PreserveSig,则使用默认值 true。 SetLastError 参数指示方法是否保留 Win32“上一错误”。如果未指定 SetLastError,则使用默认值false。 它是一次性属性类。
此外,用 DllImport 属性修饰的方法必须具有 extern 修饰符。
是的,上面就是MSDN原文内容.好了继续我们的例子,好了,先把我们上面的C代码编译成DLL叫什么呢?那就叫MYDLLTest好了.
[DllImport("MYDLLTest.dll",EntryPoint="average",ExactSpelling=false,CallingConvention=CallingConvention.Cdecl)]
static extern int average(int av[]);

C++数据类型和C#的部分对应关系

C++ I/O C# 备注
char chr[255] O StringBuilder StringBuilder在使用时,必须指定大小:
StringBuilder strPara = new StringBuilder(255);
KCA_DIR I int  
LPCSTR I string  
int I int  
LPSTR O StringBuilder  
int* O out int  
DWORD I int  
DWORD* O out int  
BOOL I bool  
long* O out long  
HWND I IntPrt 可以用Int32代替,不过建议使用IntPrt

.net下调用c/c++的dll

首先用vs2013创建一个dll。 dll的头文件如下: #ifdef CDLL_EXPORTS #define CDLL_API __declspec(dllexport) #else #def...
  • rznice
  • rznice
  • 2015年01月04日 15:19
  • 2086

AjaxPro.dll,asp.net 前台js调用后台方法(无刷新)

1、什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写。"Ajax"这个名词的发明人是Jesse James ...

Lib、DLL、COM、.Net的理解

坦白的说,作为一个学生,我们的编程、项目开发能力肯定没有那些在公司里的软件工程师强。但是,确切的说,我们的Potential未必比他们差。很多我的师弟都问我,研究生比之本科毕业后参加工作的人,难道他们...

续:Java Tomcat 中调用.net DLL的方法 - 实际部署中遇到的一些问题解决

项目中需要使用到 jacob, 我是从网上收集到的1.17版本  包含32和64位系统. 资源下载连接如下,免积分 Jacob1.17 x86&x64 连接失效的话在这里 - > http://do...

Delphi程序调用C#.Net编译的DLL并打开窗体(详解)

转自: http://www.csframework.com/archive/2/arc-2-20110408-1307.htm Delphi程序调用C#.Net编译的DL...

.NET完美实现伪静态页面,URLRewriter.dll下载

URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。 比如浏览器发来请求hostname/101.aspx ,服务器自动将这个请求中定向为http://hostname/l...

基于LumiSoft.Net.dll发、收、删邮件

发邮件: using LumiSoft.Net.SMTP.Client; Mime m = new Mime(); MimeEntity mainEntity = m.MainEntity;...
  • wyh0318
  • wyh0318
  • 2012年07月30日 12:38
  • 4702

SuperMap iObjects .NET加载dll动态库失败,控件不能用常见问题解析

初次部署使用SuperMap iObjects .NET的开发人员,可能遇到以下问题:1.环境部署不成功2.部署成功了,VS工具箱里面没有SuperMap相关控件3.工具箱里面的SuperMap相关控...

vs.net 2005, 没有找到MSVCR80D.dll的完美解决方案

问题描述:大部分的vs.net 2005的用户在新建“win32项目-windows应用程序”的时候,新建的工程都通不过去,出现如下提示: Solution to “MSVCR80D.dll not...
  • xcntime
  • xcntime
  • 2012年08月12日 18:50
  • 341

VC++ .NET 动态加载DLL,使用反射方式Invoke委托调用

每次新产品都需要配一个上位机,并且本地配置与远程配置都需要重新开放配置程序,因此就想办法把配置模块变为一个动态的控件,一次开发后续2个程序都可以同时使用,使用了很多种方法,最后还是使用反射方式. ...
  • cp1300
  • cp1300
  • 2015年10月09日 21:50
  • 1085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net 导入 DLL
举报原因:
原因补充:

(最多只允许输入30个字)