博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ c# java 调用 c++ 写的dll
阅读量:4923 次
发布时间:2019-06-11

本文共 1785 字,大约阅读时间需要 5 分钟。

 

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目录下

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xl711436/p/3731763.html

你可能感兴趣的文章
Java语言基础—— 在控制台输入
查看>>
XMLHttpRequest之status
查看>>
[Daily Life]百首好歌
查看>>
利用cycript动态调试app
查看>>
Java过滤器(Filter)与SpringMVC拦截器(Interceptor)之间的关系与区别
查看>>
List集合序列排序的两种方法
查看>>
MVC 项目发布IIS之后 静态页面无法访问问题 404
查看>>
HDU 4740 The Donkey of Gui Zhou
查看>>
FZU 1096 QS Network
查看>>
TypeScript设计模式之策略、模板方法
查看>>
Linux2.6-4G的线性地址空间的分配与使用
查看>>
京东分布式缓存redis应用实战
查看>>
个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第8波-快速可视化数据...
查看>>
官网分析(英雄传奇)(如何设计网站前端)
查看>>
SSH Key的生成和使用(for git)
查看>>
html5--6-52 动画效果-过渡
查看>>
调查表与调查结果分析
查看>>
Windows系统下安装MySQL详细教程(命令安装法)
查看>>
PHP实用小程序(六)
查看>>
PDFsharp Samples
查看>>