
本文共 2463 字,大约阅读时间需要 8 分钟。
创建一个C++项目,生成DLL文件,并在不同语言中调用它
...
一、创建C++项目
在Visual Studio 2008中创建一个新的项目
打开Visual Studio,创建一个新的“项目”或“解决方案”
选择项目类型为“默认模板”中建议的“动态链接库(DLL)项目”
为项目添加必要的包含和预设
...
二、生成DLL
轮到重要步骤:把代码编译出来
-
选择编译器的版本:确保选择“ usando-toolset对于-C++(默认是v100)”
-
选择优化选项:测试时建议不选,避免内存占用过多
- 生成
-
项目菜单栏-click,选择“生成”(Build)
-
等待生成完成,查看是否有错误
- 调试
- 项目菜单栏-click,选择“调试”(Debug)或“调试并步-through”(如果需要调试)
- 添加_mirror的关键点:避免静态链接
-
使用
MTd
可能出现问题:这是一个易错点 -
随着你只需要一个DLL,我不建议使用MTd属性,给DLL一个全新的导出方式
- 管理MFC配置:
-
如果你使用MFC相关功能,确保在项目属性中正确设置DLL的依赖项
-
以最简单方式解决配置问题:删除MFC代码
- 使用C++测试代码:
- 对于更加复杂的测试:分成多个文件
- 修改头文件
SerialPort_dll.h
: - 使用JNA库来调用=C++=DLL
-
拥有JNA库:在项目中添加依赖项
-
配置JNA属性:确保你的代码正确导入库
- 代码示例:
- 提示错误:“%1 不是一个有效的Win32应用程序”
-
DLL文件类型问题:确保生成的是DLL而非可执行文件
-
检查文件扩展名:必须是
.dll
-
确认平台兼容性:如果是32位DLL,确保用32位JRE
- 明显配置错误提示
- 这是因为缺少MFC相关信息:删除MFC代码
- 调用失败提示:“找不到函数!”
-
检查函数名字是否拼写正确
-
确保加上了
extern "C"
声明 - 确保你安装了X64编译器
-
查看Visual Studio安装目录:是否有X64选项
-
重新安装Visual Studio时加上X64工具
- 项目配置:
-
右键项目,选择“属性”(Properties)
-
选择“尝试”菜单,点击“平台选择”
-
确保选择的是“x86/x64生成默认平台”
- 生成:
- 项目-[生成]-生成(Build)
- 你的DLL将会是64位
- 自动复制DLL:
...
三、修改配置:正确的DLL导出方法
...
三、编写代码:简单的返回字符串函数
以下是实现一个间接调用函数的典型示例
// 内容提取#include// 定义一个外部函数,用于export__declspec(dllexport) char* go(char* ch) { // 显示消息框的示例代码(可以保留或删除) // MessageBox(NULL, TEXT(ch), TEXT("你好"), MB_OK); return "来自DLL的问候";}
四、测试代码:验证调用成功
// 编写测试代码#include#include // 下载相关头文件void main() { char* result = go("输入内容"); cout << result << endl; // 释放内存 if (result) { free(result); } // 停止程序 // 也可以用while循环以保持窗口打开 while (true) { Sleep(100); }}
#pragma once#include#include // 定义一个Dll版本typedef char* (*pType_go)(char*);// declare the libraryextern HINSTANCE hDll;extern pType_go go;
...
五、Java调用DLL:解决常见问题
import com.sun.jna.Library;import com.sun.jna.Native;public class JnaTest { public static void main(String[] args) { // 设置JNA编码,避免乱码 System.setProperty("jna.encoding", "GBK"); // 导入你的DLL DllInterface instance = (DllInterface) Native.loadLibrary( "SerialPort.dll", DllInterface.class ); // 调用DLL中的函数 String response = instance.go("输入内容"); System.out.println(response); }}
六、解决常见错误
...
七、生成64位DLL
选择“x64”项目平台:
结果:
八、一些高级技巧
在生成过程中,设置批量复制:
copy /y x64\Debug\SerialPort_dll.dll ..\out\production\SerialPort.dll
2.ули经时间里,每次生成都会把文件复制到指定位置
这些优化会帮助你节省时间,避免手动复制文件
通过上述步骤,你可以轻松创建一个C++项目,生成正确类型的DLL文件,并在多种语言中成功调用它。在解...
发表评论
最新留言
关于作者
