1.dll函数的导入:
    关键字:unmanaged code ; managed code;
    具体应用类:System.Runtime.InteropServices
    具体使用方法:
    [DllImport("muParser.dll", EntryPoint = "mupSetExpr", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     public static extern void mupSetExpr(void* parser_handle, StringBuilder a_szExpr);
    注意点:EntryPoint 同函数名  CharSet 注意 不要轻易使用 uncode.
           函数参数 要使用指针时 应该使用 unsafe

2.函数指针的使用:
    关键字:delegate
    具体使用方法:
    c++: typedef double (*fun_type1)(double); 
    c#:public delegate double  fun_type1(double);
    注意点:c#使用委托 方法,实现函数指针,使用时 c++中的指针去掉
           参数定义很c++一样
           
3.定义指针值
    关键字:fixed
    具体使用说明:主要是想返回指针地址,c#中好像不支持 &(可能不准确)
                 直接给指针赋值也不行
    example:
    public double* AddVariable()
    {
         fixed ( double * ptrVar = &afValBuf )
         {
             return ptrVar;
         }        
    }
    说明:相关这个指针变量都要在 fixed 里面
    
4.关于c++函数参数是 char* 的操作
    关键字:StringBuider
    具体使用说明:c++中参数char*操作是 一个字节一个字节读取的,
                 c#中的String 是 两个字节读取的 所以不能用
                 所以只用StringBuilder替代
                 
                 现在还没有找到更好的方法,如果有的话告之

5.关于dll的导入
     如果c++中dll 不是组件形式(或者COM),那么不能直接通过.NET的reference 直接应用
     我的解决方法:
         应用平台:.net website
         方法:  建立ClassLibrary 将要应用的dll放在bin下 然后编译工程 使用新生成的dll 就可以了
         
6.关于c#中使用指针:
      关键字:unsafe 
      使用方法:在需要使用指针的地方 加 unsafe

关于c#调用C++代码的一些应用的体会的更多相关文章

  1. 如何实现 javascript “同步”调用 app 代码

    在 App 混合开发中,app 层向 js 层提供接口有两种方式,一种是同步接口,一种一异步接口(不清楚什么是同步的请看这里的讨论).为了保证 web 流畅,大部分时候,我们应该使用异步接口,但是某些 ...

  2. 1.JAVA中使用JNI调用C++代码学习笔记

    Java 之JNI编程1.什么是JNI? JNI:(Java Natibe Inetrface)缩写. 2.为什么要学习JNI?  Java 是跨平台的语言,但是在有些时候仍然是有需要调用本地代码 ( ...

  3. 股票数据调用示例代码php

    <!--?php // +---------------------------------------------------------------------- // | JuhePHP ...

  4. 在HTML标签<a/>中调用javascript代码

    <a/>标签的“href”属性可以是一个有效的URL,表示跳转的目的地,除此之外,href还可以是一段javascript代码.当为“href”设置javascript代码时,格式如下:& ...

  5. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  6. java调用python代码

    同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...

  7. Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示

    如下为本人亲证代码: 一: 编译器的安装与配置(环境不同,显示结果不同) 要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器: 5.0.6.0 ...

  8. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

  9. C#调用Java代码

    c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...

随机推荐

  1. 利用c#反射实现实体类生成以及数据获取与赋值

    转:http://hi.baidu.com/xyd21c/item/391da2fc8fb351c10dd1c8b8 原有的实体类成员逐个赋值与获取的方法弊端: 1.每次对实体类属性进行赋值时,都要检 ...

  2. OracleHelper(for produce)

    OracleHelper中,有一个用存储过程实现的Insert方法. 然后我把执行存储过程的方法 封装成了可以执行任何存储过程,参数是 存储过程名称 以及存错过程中的传入.传出参数 using Ora ...

  3. fastdb中的位图应用

    位图内存管理: 每块内存用一个二进制位表示它的使用状态,如果该块内存被占用,则把对应位图中的对应位置1,如果空闲则置0,原理十分简单.计算机里面处理的位数最少的变量是字节(byte),所以也就是8位做 ...

  4. 对Struts的理解

    1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...

  5. 【Hadoop学习】HDFS中的集中化缓存管理

    Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146398.html 概述 ...

  6. 使用SignalR实现比特币价格实时刷新

    ASP.NET SignalR是微软支持的一个运行在 Dot NET 平台上的 HTML Websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重 ...

  7. mysql统计一张表中条目个数的方法

    统计一张表中条目的个通常的SQL语句是: select count(*) from tableName; #or ) from tableName; #or 统计一个列项,如ID select cou ...

  8. matlab search path

    What Is the MATLAB Search PathThe search path, or path is a subset of all the folders in the file sy ...

  9. 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0这个问题& ...

  10. ocp 1Z0-043 61-130题解析

    61. You are working in an online transaction processing (OLTP) environment. You realize that the sal ...