过程比C#调用VC++dll简单。

一、创建DLL

新建工程,类型选择类库,生成的结果就是dll

注意:在项目属性-应用程序中,注意三个地方,程序集名称和默认命名空间可以调整,但要一致,别的程序调用此DLL时,可通过using命名空间,而后类名+函数名调用。输出类型保持默认的“类库”不变。

此DLL中可以应用VC创建的DLL,但此时本DLL属性只能是X86.调用vc++dll方法还是用

[DllImport("space.dll")]

public static extern void CalcCording(double jin, double wei, double ang, double r, out double ojin, out double owei);

dll中可以进行执行、删除文件等操作。

此外dll中要获得本dll本地路径就不能用Application.ExecutablePath()函数了额,而要用自定义的

private static string GetAssemblyPath()

{

string _CodeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;

_CodeBase = _CodeBase.Substring(8, _CodeBase.Length - 8);    // 8是 file:// 的长度

string[] arrSection = _CodeBase.Split(new char[] { '/' });

string _FolderPath = "";

for (int i = 0; i < arrSection.Length - 1; i++)

_FolderPath += arrSection[i] + "/";

_FolderPath = _FolderPath.Replace("/", "\\");

return _FolderPath;

}

二、C#调用C#dll

1、可在dll项目同一解决方案下添加WindowsForm项目,并设为启动项目

2、以添加引用的方式将上面创建的dll引入本项目

3、直接用dll的类名+函数名的方法调用dll中的函数(需要using命名空间),不用[DllImport("...")]的方法引用了。

4、参数传递更加自由,可用数组或List<>类型传递参数。

2015.5.9 C#编写DLL及C#调用C#DLL的更多相关文章

  1. 在VS2015中用C++编写可被C#调用的DLL

    VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015-->文件-->新建-->项目,按图二进行选择,选择Win32项目,弹出创建窗口,如第二张图.注意.net版本根 ...

  2. C# 调用外部dll(转)

    C# 调用外部dll   一.      DLL与应用程序 动态链接库(也称为DLL,即为"Dynamic Link Library"的缩写)是Microsoft Windows最 ...

  3. C#调用外部DLL介绍及使用详解

    一.      DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件 ...

  4. 非托管C++通过C++/CLI包装调用C# DLL

    项目中要给其它客户程序提供DLL做为接口,该项目是在.Net4.0平台下开发.终所周知.Net的各个版本之间存在着兼容性的问题,但是为了使用高版本运行平台的新特性,又不得不兼顾其它低版本平台客户程序的 ...

  5. Delphi编写DLL供C#调用的实例

    Delphi中编写的Dll: library TestDLL; { Important note about DLL memory management: ShareMem must be the f ...

  6. QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

    最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,所 ...

  7. c调用c++编的dll,c++调用c编写的dll,extern “C”的用法

    转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区 ...

  8. BCB如何编写,调用动态链接库DLL

    一 编写动态链接库DLL DLL简称动态链接库,是Windows中程序的重要组成部分.想象一下,一个程序需要多人共同完成开发,怎么个共同法?这时我们就要考虑把程序分为好几个模块,团队每一个成员开发一个 ...

  9. Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)

     Eclipse.MinGW.JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法) 问题背景:之前的JNI编程都是基于And ...

随机推荐

  1. Email-Ext Plugin install ------ Jenkins Plugins

    一.基本信息 1. Email-Ext Plugin功能简介 支持Jenkins邮件发送时,自定义邮件内容功能.详情可以查看jenkins的wiki : https://wiki.jenkins-ci ...

  2. MapReduce-shuffle过程详解

    Shuffle map端 map函数开始产生输出时,并不是简单地将它写到磁盘.这个过程很复杂,它利用缓冲的方式写到内存并出于效率的考虑进行预排序.每个map任务都有一个环形内存缓冲区用于存储任务输出. ...

  3. myEclipse 输入时英文自动变成2个字符大小

    比如这样: ——这是输入法的问题,输入法被误设为圆角了. 输入法有区分圆角半角,正常来说我们使用的都是半角. 那么如何切换半圆角? ——比如:百度输入法 首先,将半圆角的快捷键显示出来: ——点击“d ...

  4. 自己动手写OpenStack的QoS功能(4)

    本文地址:http://blog.csdn.net/spch2008/article/details/9283561 数据库相应操作已完成,对OVS-Plugin进行修改. 在quantum\plug ...

  5. openstack-ansible -- 3 Target hosts

    Installing the operating system Install the Ubuntu Server 14.04 (Trusty Tahr) LTS 64-bit operating s ...

  6. c++中的函数对象

    头文件wuyong.h: #pragma once #include<iostream> using namespace std; template<typename T> s ...

  7. 怎么用API网关构建微服务

    选择将应用程序构建为微服务时,需要确定应用程序客户端如何与微服务交互.在单体应用程序中,只有一组端点.而在微服务架构中,每个微服务都会暴露一组通常是细粒度的端点.在本文中,我们将讨论一下这对客户端与应 ...

  8. CentOS 7.3 关闭默认防火墙&远程登录

             小编作为一个运维新人,踩坑之路是必不可少的.          这不,新来了一家公司,做云运维工程师,新的环境,网络和之前的都不一样,VMware Workstation虚拟机上的网 ...

  9. C++中++i与i++

    #include "stdafx.h" #include "string" #include "iostream" #include &qu ...

  10. npm、模块暴露,小知识点区别

    --save-dev与--save的区别 npm install xxx --save-dev 是指将包信息添加到 package.json 里的 devDependencies节点,表示开发时依赖的 ...