当前位置: 首页 > 知识库问答 >
问题:

c# 包装c++ 生成的dll然后套皮后再编译为一个新的dll,供java调用?

司空福
2023-08-11

目前有个一个opcdaauto.dll,该dll使用c++编写,本想使用java JNA调用,但是查看了下这个dll暴露的函数只有四个DLL开头的函数,一番查阅才知道这个和windows的COM技术有关,java不是很好调用。但是我尝试了使用c#调用就很方便,直接引用就可调用。因为整个公司技术栈都是java,所以考虑到开发和维护使用c#成本都比较高,所以打算使用c#将该dll中的所有类与方法都包装一层,即使用c#将原代码中的所有类和方法套层皮再编译生成一个新的dll供java调用。
c#我也不懂,但是查了下这个理论应该可行,但是实际操作毫无头绪,百度一番也是无果,所以想请教各位大佬:

1、该路线是否可行?2、具体操作该如何做?3、复杂度怎么样?

不知道这个复杂度怎么样,我是感觉比我直接学c#要更麻烦,但奈何领导还是让用java,没办法唉

image.png

共有2个答案

商俊智
2023-08-11

https://www.swig.org/ 试试这个 。

贡和裕
2023-08-11

不建议你用 C# 封装 COM,用 C# 封装开发貌似简单,但如果你本身对 C# 不够了解,学习 C# 本身就需要花不少的时间,而且你为了这个简单的需求每次产品还要带上整个的 .Net 包,感觉得不偿失。
如果封装的化,建议你直接再用 C++ 封装成一个 DLL,C++ 调用 COM 组件稍微麻烦一点,但有ATL 封装也还好,C++ 封装成 JNI 教程也满地都是。

 类似资料:
  • 问题内容: 我正在将Java用于小型应用程序。这是对现有MFC项目的重写。我需要更改一个现有的dll,以启用使用JNI从Java进行的访问。所有这些Java知识对我来说都是新手,因此当我阅读其他论坛帖子时遇到了一些麻烦,并且感觉比较密集。在现有的dll中,我具有如下功能: 愚蠢的提问时间。如何正确设置它以被Java调用? 我尝试了这个: 我包括jni.h,一切编译正常。但是,当我从Java调用它时

  • 本文向大家介绍windows中使用C# 调用 C语言生成的dll,包括了windows中使用C# 调用 C语言生成的dll的使用技巧和注意事项,需要的朋友参考一下 首先建立一个C语言源文件test.c 然后下载mingw64,解压,进入到bin目录,查看是否有gcc.exe ,只要下载正确肯定是有的,可以把这个bin目录加入环境变量,就可以在任意地方运行gcc。偷懒的做法是直接把刚才做好的test

  • 为什么使用 qmake 生成的比 cmake 生成的 dll 要大很多? 在Qt中,我们使用 qmake 和 cmake 分别创建一个项目,然后寻找Release运行程序,再使用Qt的打包工具,两者生成的dll文件大小相差很大,这是为什么?

  • 本文向大家介绍C++调用C#的DLL实现方法,包括了C++调用C#的DLL实现方法的使用技巧和注意事项,需要的朋友参考一下 SwfDotNet是C#编写的,这是个特别好的读写Swf文件的库。本文讲述了在C++项目中,怎么让C++调用C#的DLL动态链接库文件。 具体的实现步骤如下: 一、创建C# DLL,需要指定应用类型为“类库”,代码: 二、C++客户程序,是个控制台应用,代码: 三、这里有几点

  • 本文向大家介绍cython 包装DLL:从C ++到Cython到Python,包括了cython 包装DLL:从C ++到Cython到Python的使用技巧和注意事项,需要的朋友参考一下 示例 这展示了一个用Cython包装C ++ dll的简单例子。它将涵盖以下主要步骤: 使用Visual Studio使用C ++创建示例DLL。 用Cython包裹DLL,以便可以在Python中调用它。

  • 本文向大家介绍C#实现将javascript文件编译成dll文件的方法,包括了C#实现将javascript文件编译成dll文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现将javascript文件编译成dll文件的方法。分享给大家供大家参考,具体如下: 第一步:新建项目 添加js文件 写个测试Function (JScript.js) 单击JS文件属性。将 生成操作 改