1. vs 中新建win32 dll 项目   testdll

添加实现文件       test.cpp

#include "stdafx.h"
#include <iostream>
using namespace std;
int Add(int plus1, int plus2)
{
int add_result = plus1 + plus2;
return add_result;
}

添加模板定义文件

LIBRARY "testdll"
EXPORTS
Add @1

编译生成 dll 文件

2.  c++  程序调用  c++ dll

新建 c++控制台 程序

copy 第一步 生成的 lib 文件 到 工程目录下

添加引用 dll 的 头文件  main.h

pragma comment(lib,"testdll.lib")
extern "C"_declspec(dllimport) int Add(int a, int b);

主文件

#include "stdafx.h"
#include <iostream>
#include "main.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "aaa" << endl;
cout << Add(3,4)<< endl;
return 0;
}

编译 生成 exe 文件,运行时确保第一步生成的dll 在 exe 同目录下,或者在windows目录或者在 环境变量path指定的目录

3. c# 程序调用 c++ dll

新建 winform 或者控制台程序

添加  代码到 任意类中

[DllImport("testdll.dll", EntryPoint = "Add")]
private extern static int Add(int I_A, int I_B);

在winform中的调用方式:

MessageBox.Show(Add(3, 4).ToString());

编译 生成 exe 文件,运行时确保第一步生成的dll 在 exe 同目录下,或者在windows目录或者在 环境变量path指定的目录

4. java 调用 c++ 写的 dll

新建 java 控制台程序

添加  java文件   TestDLL.java, 声明需要引用的方法

package helloworld;

public class TestDLL
{
static
{
System.loadLibrary("javadll");
}
public native int add(int num1, int num2);
}

在此工程的 bin 目录 下 根据 声明的 java 文件 生成对应的 .h 头文件

通过javah 命令

javah -classpath . -jni helloworld.TestDLL   此时会生成  helloworld_TestDLL.h  文件

新建 c++ 的 dll 项目,将 helloworld_TestDLL.h  添加 到 项目中

将 jniport.h 文件添加到 项目中,  如果在本地找不到,可以在网上下载此文件

添加 实现文件 testDll.cpp

#include "stdafx.h"

#include "helloworld_TestDLL.h"

JNIEXPORT jint JNICALL Java_helloworld_TestDLL_add

(JNIEnv * env, jobject obj, jint num1, jint num2)

{

return num1 + num2;

}

生成dll,将此dll copy 到  java项目中的lib 文件中

在java 项目的 main 方法中调用  dll中的方法

public static void main(String[] args) {

System.out.println(new TestDLL().add(3,4));

}

运行时 ,将 dll文件copy 到jdk 的bin目录下

c++ c# java 调用 c++ 写的dll的更多相关文章

  1. 【转载】java调用C++写的DLL

    用java调用C++写的DLL一直以来都是一个比较麻烦但又很常见的问题. 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.so 文件,如 ...

  2. 通过COM组件方式实现java调用C#写的DLL文件

    转自这里 最近一段时间单位在做一个Web项目,工程师用JAVA语言,需要公用人员信息,统一用户名和密码,原有的平台中是用C#语言开发的,在网上查找解决方法,通过JAVA调用C#的DLL文件实现.网上资 ...

  3. 通过COM组件方式实现java调用C#写的DLL文件 转

    最近一段时间单位在做一个Web项目,工程师用JAVA语言,需要公用人员信息,统一用户名和密码,原有的平台中是用C#语言开发的,在网上查找解决方法,通过JAVA调用C#的DLL文件实现.网上资料很多,自 ...

  4. 实现通过COM组件方式实现java调用C#写的DLL文件的完整demo

    最近因为工作需要,客户那边工程师使用的是JAVA语言开发的程序,我们这边平台中是用C#语言开发的,因为有些操作必须统一,所以我在网上查找解决方法,自己也实践过,在这里做个笔记吧,分享一下. 声明:下面 ...

  5. c++调用c#写的DLL

    c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...

  6. QT调用C#写的Dll

    参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...

  7. Delphi7程序调用C#写的DLL解决办法(转)

    近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个 ...

  8. 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象

    发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...

  9. Delphi7程序调用C#写的DLL解决办法

     近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一 ...

随机推荐

  1. Easyui datebox 限制时间选择范围

    Require Date: <input class="easyui-datebox" data-options="formatter:myformatter,pa ...

  2. HttpContextBase转换成HttpContext对象

    有以下方法: 主要是方式就是通过context获取HttpApplication,然后通过Application获取相应的HttpContext ①HttpContext context=HttpCo ...

  3. Python体验(10)-图形界面之计算器

    import wx class Form(wx.Frame): def __init__( self, parent, id, title ): wx.Frame.__init__(self,pare ...

  4. Linux学习四:UDP编程(上)

    关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...

  5. sublime如何关闭响应慢的插件的提示

    Preferences > Settings - User Add the following:  "detect_slow_plugins": false sublime真 ...

  6. 正则表达式regex狂记

    正则.正则..往往在某个不经意间显示其强大的潜能 概念等基础知识不做介绍,直奔规则.格式.实例…… 元字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符 ...

  7. JavaScript笔记基础篇(三)

    针对前段JS获取当前时间或者对时间数据处理方法汇总: javascript 字符串转化为日期 Java代码   var s="2010-5-18 12:30:20"; var t= ...

  8. AX7: Get started developing

    This blog will show how you can start making a customization in AX 7 by showing you the steps needed ...

  9. 解决在CentOS6.5下安装OpenStack(Icehouse版本 )出现的glance服务无法正常工作的问题

    最近一直在用Juno版本,因为项目需要,今天在虚拟机里安装了Icehouse版,其中glance组件在执行安装的过程后,出现启动失败的现象,幸好以前排查过此类错误,遂记录如下: 在官方文档(Iceho ...

  10. [转载]python操作excel使用win32com

    原文链接:http://blog.163.com/yang_jianli/blog/static/16199000620138532243782/ 使用COM接口,直接操作EXCEL(只能在Win上) ...