鱼C论坛

 找回密码
 立即注册
查看: 2921|回复: 4

[已解决]一个很麻烦的问题,求解决!很急!!!

[复制链接]
发表于 2020-9-12 21:59:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近我在写一个程序,里面有两个程序需要共享同一个DLL,求解决!
最佳答案
2023-11-28 05:37:11
小甲鱼的二师兄 发表于 2023-11-28 05:36
一个程序,里面有两个程序需要共享同一个DLL。

应 ...

要实现两个程序共享同一个DLL,可以按照以下步骤进行操作:

1. 创建一个动态链接库(DLL)项目。在Visual Studio中,选择新建项目,选择Visual C++ -> Win32 -> Win32 项目,勾选“动态链接库(.dll)”选项,并给项目取一个有意义的名称。

2. 在DLL项目中添加所需的函数和变量。例如,假设我们要共享一个计算两个数之和的函数Add,可以在DLL项目中的源文件中实现该函数。同时,在DLL项目中可以定义要共享的全局变量。

3. 将DLL项目编译生成DLL文件。在Visual Studio中,选择生成 -> 生成解决方案,或者按快捷键Ctrl + Shift + B。

4. 创建两个需要共享DLL的程序。在Visual Studio中,选择新建项目,选择Visual C++ -> Win32 -> Win32 控制台应用程序。

5. 在每个程序中引入DLL依赖。在每个程序的源文件中,使用`#include`语句包含DLL的头文件,并在需要调用DLL函数的地方进行调用。同时,为了让程序能够找到DLL文件,我们还需要将DLL文件拷贝到程序运行的目录下。

下面是一个简单的示例代码:

【DLL项目源文件 Project.cpp】
// 导出函数extern "C" __declspec(dllexport) int Add(int a, int b){    return a + b;}// 导出变量extern "C" __declspec(dllexport) int globalVar = 100;
【程序1源文件 Program1.cpp】
#include <iostream>#include "Project.h"int main(){    int result = Add(10, 20);    std::cout << "Result: " << result << std::endl;    std::cout << "Global variable: " << globalVar << std::endl;    return 0;}
【程序2源文件 Program2.cpp】
#include <iostream>#include "Project.h"int main(){    int result = Add(30, 40);    std::cout << "Result: " << result << std::endl;    std::cout << "Global variable: " << globalVar << std::endl;    return 0;}
将上述代码分别保存为Project.cpp、Project.h、Program1.cpp和Program2.cpp,并创建相关项目,编译运行后,你将看到两个程序分别调用DLL中的函数和访问共享变量。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-17 14:10:47 | 显示全部楼层
要共享什么?DLL本身就是可共享的,是要共享数据吗?
用内存映射文件共享啊,不过两个程序共享一段数据,要注意线程同步。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-16 23:22:24 From FishC Mobile | 显示全部楼层
就直接加载那个dll就行,dll可以被多个程序使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 05:36:57 | 显示全部楼层
一个程序,里面有两个程序需要共享同一个DLL。

应该如何操作?

请给出具体的案例。

@FishC_GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 05:37:11 | 显示全部楼层    本楼为最佳答案   
小甲鱼的二师兄 发表于 2023-11-28 05:36
一个程序,里面有两个程序需要共享同一个DLL。

应 ...

要实现两个程序共享同一个DLL,可以按照以下步骤进行操作:

1. 创建一个动态链接库(DLL)项目。在Visual Studio中,选择新建项目,选择Visual C++ -> Win32 -> Win32 项目,勾选“动态链接库(.dll)”选项,并给项目取一个有意义的名称。

2. 在DLL项目中添加所需的函数和变量。例如,假设我们要共享一个计算两个数之和的函数Add,可以在DLL项目中的源文件中实现该函数。同时,在DLL项目中可以定义要共享的全局变量。

3. 将DLL项目编译生成DLL文件。在Visual Studio中,选择生成 -> 生成解决方案,或者按快捷键Ctrl + Shift + B。

4. 创建两个需要共享DLL的程序。在Visual Studio中,选择新建项目,选择Visual C++ -> Win32 -> Win32 控制台应用程序。

5. 在每个程序中引入DLL依赖。在每个程序的源文件中,使用`#include`语句包含DLL的头文件,并在需要调用DLL函数的地方进行调用。同时,为了让程序能够找到DLL文件,我们还需要将DLL文件拷贝到程序运行的目录下。

下面是一个简单的示例代码:

【DLL项目源文件 Project.cpp】
// 导出函数extern "C" __declspec(dllexport) int Add(int a, int b){    return a + b;}// 导出变量extern "C" __declspec(dllexport) int globalVar = 100;
【程序1源文件 Program1.cpp】
#include <iostream>#include "Project.h"int main(){    int result = Add(10, 20);    std::cout << "Result: " << result << std::endl;    std::cout << "Global variable: " << globalVar << std::endl;    return 0;}
【程序2源文件 Program2.cpp】
#include <iostream>#include "Project.h"int main(){    int result = Add(30, 40);    std::cout << "Result: " << result << std::endl;    std::cout << "Global variable: " << globalVar << std::endl;    return 0;}
将上述代码分别保存为Project.cpp、Project.h、Program1.cpp和Program2.cpp,并创建相关项目,编译运行后,你将看到两个程序分别调用DLL中的函数和访问共享变量。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 16:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表