如果是非托管的,就用DllImport,举例  
  using System;  
  using System.Runtime.InteropServices;  
  class MainApp  
  [DllImport("Kernel32")] //读取动态库文件  
  public static extern int GetProcAddress(int handle, String funcname);

给你讲一下我的经验:  
  首先 你在C#中调用的 是C++ 写的一个动态库。比如Kernel32.dll 中的 函数;  
  这个函数用C++写 有如下要求:  
1、 必须为全局函数  
2、 函数参数 必须为基本类型,也就是C++ 和C#都有的类型,否则你在public static extern int GetProcAddress(int handle, String funcname);  
  这里没有办法声明。 其余的 没什么了;

先前用VC写的程序生成的DLL,C#里能够调用么?  
可以的话,在VC里传入参数为CString,而C#里是string,怎么传参数呢?

再者就是问,用VC写的DLL如果是一个导出类,而不是函数接口,C#里可以直接调用么?  
第一个问题我遇到过, 可用如下方法解决:

VC++ 中为: int Set(char** str,int n); //将 String 改成 char** , C# 中没有与String对应的类型  
  C# 中为: int Set(ref string str,int n);  
   
  VC++ 中的 BOOL 类型对应 C# 中的 System.Int32 类型, 建议改动一下参数类型吧.

第二个问题,生成的DLL里的函数在一个类里面,这样的话在C#里需要实例化那个类么?怎么做  
比如说,类solution里有函数int getch(int a);  
我怎么调用这个getch函数??

建议在C++中另外写个函数封装一下, 如:  
  int Dllgetch(int a)  
{  
  solution st = //实例化 类solution  
  return st.getch(a);  
}  
这个 Dllgetch(int a) 就可以提取出来供 C# 调用.
你的方法可以,我也解决了  
将CString 改成了LPCTSTR  
BOOL在C#中对应的是Boolean

c#调用c++库函数的更多相关文章

  1. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  2. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

  3. 《Android进阶》之第一篇 在Java中调用C库函数

    在Java代码中通过JNI调用C函数的步骤如下: 第一步:编写Java代码 class HelloJNI{ native void printHello(); native void printStr ...

  4. 关于调用数据库函数executeUpdate抛出异常

    2018.06.11写一个web程序的时候发现了一个问题,解决了好几天都没解决,并且也找不到问题所在.偶然百度找到了根源所在,希望可以帮到大家. 1 在调用这个函数的时候一直抛异常.刚开始我还以为是代 ...

  5. 多种方法实现实现全排列 + sort调用标准函数库函数的简述

    全排列:所有不同顺序的元素组组成的一个集合.这里使用使用递归实现全排列. 使用递归算算法呢,首先我们先找一下结束的条件:我们要对一组元素(这里使用数字举例)实现全排列,临界条件就是递归到只有一个元素的 ...

  6. 调用数据库函数CallableStatement

  7. android studio 1.0 开发 ndk 调用 c++ so库

    一个没用过java和安卓的人使用android studio开发带c++ so库的安卓程序用例(以ndk的hello-jni为例),对于不熟悉java和安卓的人来说这个很花时间,希望通过这篇文章帮助跟 ...

  8. 如何快速上手使用STM32库函数

    一.背景 如前文所述,利用标准库函数的好处在于,可以快速开发,不用去对着数据手册,小心翼翼的一位一位的配置那些繁复的寄存器,因为这些工作意法半导体已经找了一些顶级的工程师帮你做了,杰作既是其库函数.当 ...

  9. 在visual studio 2010中调用ffmpeg

    转自:http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html 最近几天一直在折腾ffmpeg,在网上也查了许多资料,费了不少劲,现在在这里和大家分享一 ...

随机推荐

  1. [EffectiveC++]item35:考虑virtual函数以外的其他选择

    本质上是说了:   Template Pattern & Strategy Pattern 详细见<C++设计模式 23种设计模式.pdf 55页> 宁可要组合 不要继承. ——— ...

  2. 使用nodejs代码在SAP C4C里创建Individual customer

    需求:使用nodejs代码在SAP Cloud for Customer里创建Individual customer实例. 代码: var createAndBind = require('../je ...

  3. 使用matlab对图像进行傅里叶变换

    原图: (0) 代码: I=imread('1.jpg'); I=rgb2gray(I); I=im2double(I); F=fft2(I); F=fftshift(F); F=abs(F); T= ...

  4. FRP-Functional Reactive Programming-函数响应式编程

    响应式编程是一种面向数据流和变化传播的编程范式: 响应式编程和函数式编程的融合: 响应式编程为内核:函数式编程为工具: 流的概念先天适合函数式编程. Some quotes from the arti ...

  5. Gluon Data API

    http://mxnet.apache.org/api/python/gluon/data.html import sys import os import time import mxnet as ...

  6. tp5.0和tp3.2中前台模板IF标签和FOREACH的区别

    IF标签 tp3.2 <if condition="($name eq 1) OR ($name gt 100) "> value1 <elseif condit ...

  7. 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...

  8. Python re模块正则表达式

  9. Segmentation fault(Core Dump)

    Segmentation fault 这个提示还是比较常见的,这个提示就是段错误,这是翻译还是十分恰当的. Core Dump 有的时候给我们呈现的翻译很有趣是”吐核“,但是实际上比较贴切的翻译是核心 ...

  10. HP-UNIX平台修改Oracle processes参数报错:ORA-27154、ORA-27300、ORA-27301、ORA-27302

    OS 版本     :HP-UX B.11.31Oracle版本:11.2.0.4 (RAC) (一)问题描述 最近发现无法连接上数据库,报错信息为“ORA-00020:maximum number ...