C#调用非.net的dll

C#调用工控机dll文件,实现对IO的控制     本文旨在记录,C#通过调用外部DLL文件实现对Nuvo3120工控机IO口的控制。    前期,了解了C++中.c\.h\.lib文件的区别,以及用这些文件生成DLL的方法,后面通过厂家直接找到了WDT_DIO64.dll文件,工作重点由代码转化变为C#调用dll文件,实现函数调用的问题。    关于C#调用dll的方法。    首先尝试了在解决方案资源管理器里,右键“引用”在弹出菜单中“... 阅读详情

在。net之前,已经聚集了好多功能丰富且完整的动态链接库,如果不能把他们加到.net中来用,将是一个很大的损失。

以下是用vc++6.0开发的一个简单dll,具体如下:

1.新建一个 Win32 Dynamic-Link Library 工程(即倒数第二个),名:TestDll
2.选择第一个: An empty Dll project
3.新建Test.cpp和Test.h

Test.h代码如下:

#ifndef  TEST_H
#define TEST_H
extern int __declspec(dllexport) Add(int x,int y);
#endif

Test.cpp代码如下:

#include "Test.h"
int  Add(int x,int y)
{
  return x+y;
}

然后按Ctrl+F5,会弹出一个对话框,按取消即可。

至此,我们已经生成了一个TestDll.dll文件了,现在我们把它放到D盘的直接目录下。

由于是普通的调用外部dll,所以为了方便起见,我们在vs2005创建一个Console项目。

下面是Program.cs的代码清单:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
  class Program
  {
      [DllImport(@"D:/TestDll.dll")]     //导入dll路径
     public static extern int Add(int a,int b);//声明要调用的函数接口
    static void Main(string[] args)
   {
      Console.WriteLine(Add(1,2));
   }
 
  }
}

结果输出:3。

了解你的GPU:深入探讨AMD SMI 2024年9月17日 作者:Matt Elliott对于使用AMD硬件的系统管理员和高级用户来说,性能优化和高效的资源监控至关重要。AMD系统管理界面命令行工具`amd-smi`正是为了解决这些需求而设计的。amd-smi是一个多功能的命令行工具,专门用于管理和监控AMD硬件,主要侧重于GPU。作为未来取代`rocm-smi`的工具,`amd-smi`有望成为跨广泛设备的AMD硬件管理的主要工具。 阅读详情

相关推荐

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

Lettuce是SpringBoot自带的Redis客户端,性能比Redis要好, 是线程安全的,支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

朗朗的博客 3812

.NET引用DLL时提示未能注册ActiveX类型库

ASP.NET 项目中需要添加一个名为ReadDbt.dll引用,这个DLL是用其他语言编写的,但是添加引用的时候出现了下面的错误提示: 如提示,原因就是未注册ActiveX 类类型库,也就是ReadDbt.dll这个dll未在当前机子上注册; 注册方法: “Win + R”快捷键打开运行窗口 ,输入命令:regsvr32 + 空格 + dll绝对路径 例如本例输入: regsvr32 E:\ODMS-Working.Project_TRL\Library\ReadDbt.dll 问题解决。 ..

qq_43128070的博客 1589

vs2022报找不到.netframework,version=V4.8的引用程序集

最近在win7上面安装vs2022 17.6版本,打开.net项目编译的时候出现了这个提示。解决方案就是安装.net4.8开发者工具包,不是运行工具包。

记录日常技术经验 3098

C#实战023:解决添加xxx.dll引用时报错,请确保xxx是有效的程序集或者COM组件

今天在引入第三方dll时弹出错误提示【未能添加对“xxx.dll”的引用。请确保此文件可访问并且是一个有效的程序集或者COM组件】,正常情况下在解决方案中添加引用:右键鼠标–>添加引用–>浏览–>选择xxx.dll文件,点击“确定”,然后再在引用管理器中选择文件进行引用,但是今天怎么也没法引入该dllC#添加引用的类库需要这个Dll本身是.net程序集,或者...

kevinfan的博客 3万+

regasm注册.net com组件 “不是有效的.net程序集,因此无法加载它“

解决方法; 1.注意regasm版本和要注册的版本是否匹配。不能用2.0的regasm版本来注册基于.net 4…0框架的dll. 2.注意64位和32位的差别 64位 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe 32位 C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe ...

qq_34967329的博客 3824

C#/WPF/.NET 找到的程序集清单定义与程序集引用不匹配

使用清除联机缓存卸载可能具有同一版本的强名称程序集的已安装应用程序的所有版本, mage.exe -cc 然后重新安装该解决了问题mage.exe的路径 打开命令行()输入以下命令 我的运行输出 清除前先退出程序 重新启动~~~最终我的问题没解决,如果你的解决了,恭喜你,如果也没解决继续阅读 最终查看csproj 引用 CircularGauge.dll的版本号居然没配置 左侧是使用下面这个软件打开分析我的运行软件的程序清单版本号,右侧是代码中的配置版本号

资深全栈开发工程师 3332

C# 调用dll(native or managed)

.net dll简介 dll文件在windows上通常是指动态链接库文件,但是在.Net平台上dll为托管代码,虽然同样是为了共享代码,但不再是传统意义上的动态链接库了。 在.NET中,引入了一个程序集的概念,指经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为.dll,或者是.exe的格式。因此,在.Netdll文件为程序集,也叫类库,是托管代码,...

hustlei的专栏 4090

VS环境下C++ Builder,Delphi,VC,VB等调用C#开发的DLL的完整方法

C#写的DLL在VS环境下比较容易调用,但是在VS环境下,如C++  Builder、DELPHI、VC、VB等开发环境下调用就相对麻烦一些,在这些VS开发环境中是以COM组件方式来调用的,在别人开发好的C# DLL会提供一个DLL文件,最好提供一个相应的tlb文件,使用步骤如下: 1、运行环境需求       .NET运行环境 2、注册COM,导入tlb到开发环境      1)

e我行 1163

C#调用mfc的dll后面的接口函数怎么写?

C#调用mfc的dll后面的接口函数怎么写?在使用外部的.NET托管的DLL的时候,通常你要知道这个dll中公开了那些接口(一般情况下只有公开的方法有用)。 例如:在一个用C语言编写的用来读取串口上IC卡读卡器的dll中公开了如下的方法。 int auto_init(int port,ulong baud); 这个方法是用来自动初始话读卡器的。我们在C#中就要通过dllImport的方式来使

兵临城下专栏 1621

vb和asp中调用c#类库的详细步骤了截图

作者:KimmKing  (kimmking@163.com)        2008年12月4日11:04:26 摘要:本文阐述了在vb和asp中调用c#生成的.netdll的方法和步骤。     使用c#语言在.net平台生成的dll是基于MSIL的二进制代码,通常情况下是无法被native的语言和程序调用的(例如vb,vc,delphi)。但是一般来说windows上native的程序都是...

KimmKing的技术博客 582

C#中unsafe的使用

1. unsafe在C#程序中的使用场合: 1)实时应用,采用指针来提高性能; 2)引用.net DLL提供的如C++编写的外部函数,需要指针来传递该函数; 3)调试,用以检测程序在运行过程中的内存使用状况。 2. 使用unsafe的利弊 好处是:性能和灵活性提高;可以调用其他dll的函数,提高了兼容性;可以得到内存地址; 带来麻烦是:法修改了某些变量;内存

leayon的专栏 4375

vb、asp和html中调用c#类库的详细步骤了截图

摘要:本文阐述了在vb、asp和html中调用c#生成的.netdll的方法和步骤。     使用c#语言在.net平台生成的dll是基于MSIL的二进制代码,通常情况下是无法被native的语言和程序调用的(例如vb,vc,delphi)。但是一般来说windows上n

wumiju的专栏 2036

python labview c#知识产权_LabVIEW如何调用C#Winform

界面交互并不是Labview的强项,使用Labview创建UI时候总会受制于VI有限的控件,有限的皮肤和有限的控件事件。而当需要实现UI的多文档的窗口,窗口的浮动停靠,动画等功能时还需要花很大的功夫。因此可以使用其他语言实现界面表达和交互,由LabVIEW调用作为补充。同时,文本编程中(例如C#)中的IDE辅助下,通过交互配置的方式自动生成代码,开发界面程序更高效。C# 作为面向对象语言,窗口代码...

weixin_35869628的博客 448

C#编写DLL,其它语言可以调用

本文介绍了两种实现C# DLL跨语言调用的方法:1)通过COM组件实现通用互操作,适用于Python、Java、C++等多种语言;2)使用P/Invoke导出托管函数,专为C/C++调用设计。重点讲解了COM组件的创建步骤,包括配置COM可见性、添加GUID标识、注册DLL等关键技术点,并提供了Python和C++的调用示例。同时强调了数据类型兼容性、错误处理和位数匹配等注意事项,为开发者提供了完整的跨语言互操作解决方案。

GuoGuoABC 782

调用 调用...疯狂的调用

转向.NET后,手头上往往仍有旧的模块要重用。也许这些模块是Delphi写的,也许是C/C++写的,或者是其它编程语言……为了能把它们移植到.NET下,或者是在.NET调用,To be or not to be, that is a question。  在这里,我笔记了几个在工作中遇到的几个场景。不过,这里不包括完全使用C#来重写原来用C++编写的程序这种变态的需求。当你被要求做这种事的时候,...

weixin_30376453的博客 85

C# 判断DLL不是.NET程序集几种方法

2.通过读取 AssemblyName 判断。1.通过读取PE头信息判断。

fhqiwmc的博客 873

.net C#里怎样调用托管动态库函数dll

 这里讲述的是C#调用标准动态库的问题, 在我以前的文件中讲到过, C#调用Win32API, 原理是一样的. 这里我详细讲解用C写一个标准的动态库, 然后让C#调用. (本篇适合初学者, 中间没有任何冗余代码, 简洁明了) 软件环境: VC6.0(当然其他版本的VC5也可以) 1.制作标准动态库__declspec(dllexport) int __cdecl add(int, int);//这

2262

C#调用托管dll文件

C#调用托管dll文件C#对两种类型动态库的使用1.托管2.托管C#调用托管dll一、C++头文件样子解决方案:二、使用DLLImport类三、二次封装为.NET托管dll或者ocx过程参考 C#对两种类型动态库的使用 来自链接:C#对两种类型动态库的使用 1.托管 如果一个动态库本身是基于.NET的,那么可以直接在工程引用里右键添加引用,如微软的COM技术【因为你依托的是微软的框架,所以需要regsvr32注册】 2.托管 如果不是基于.NEt的,那么需要使用DllImport技术,或者通过MFC

lanshahewu的博客 2514

C#程序脱离.net框架的多种方法与应用

本文介绍的是C#编写的winform程序脱离.net框架的方法。【也支持VB.NET和C++.NET】本文地址:http://hi.baidu.com/44498/blog/item/dabd37166a11bd10962b437d.html转载请说明。------------------------------很多朋友会问,为何选择C#   ?其实原因很

blacksource的专栏 1万+

如何读取dll里资源文件 的几种方法

如何读取dll里资源文件 本人亲自验证的几种方法,这里已xml文件为例 一、当前程序集             System.Xml. XmlDocument doc = new System.Xml.XmlDocument();             //xml直接嵌入程序集 读取的方法             System.IO. Stream sm = Assembly .Get

qq_27652543的博客 3779

最新最全!2024年经管类国自然、国社科立项名单(附68份国自然标书)

1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/1430835402、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题3、适用对象:大学生,本科生,研究生小白可用,容易上手!!!3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

上一篇: 二叉树类结构的实现
下一篇: 用C#的Raw Socket实现网络封包监视
fox_sky
博客等级 码龄20年 14粉丝 18原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值