鱼C论坛

 找回密码
 立即注册
查看: 3354|回复: 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】
  1. // 导出函数
  2. extern "C" __declspec(dllexport) int Add(int a, int b)
  3. {
  4.     return a + b;
  5. }
  6. // 导出变量
  7. extern "C" __declspec(dllexport) int globalVar = 100;
复制代码

【程序1源文件 Program1.cpp】
  1. #include <iostream>
  2. #include "Project.h"
  3. int main()
  4. {
  5.     int result = Add(10, 20);
  6.     std::cout << "Result: " << result << std::endl;
  7.     std::cout << "Global variable: " << globalVar << std::endl;
  8.     return 0;
  9. }
复制代码

【程序2源文件 Program2.cpp】
  1. #include <iostream>
  2. #include "Project.h"
  3. int main()
  4. {
  5.     int result = Add(30, 40);
  6.     std::cout << "Result: " << result << std::endl;
  7.     std::cout << "Global variable: " << globalVar << std::endl;
  8.     return 0;
  9. }
复制代码

将上述代码分别保存为Project.cpp、Project.h、Program1.cpp和Program2.cpp,并创建相关项目,编译运行后,你将看到两个程序分别调用DLL中的函数和访问共享变量。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2022-3-16 23:22:24 From FishC Mobile | 显示全部楼层
就直接加载那个dll就行,dll可以被多个程序使用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

应该如何操作?

请给出具体的案例。

@FishC_GPT
小甲鱼最新课程 -> https://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】
  1. // 导出函数
  2. extern "C" __declspec(dllexport) int Add(int a, int b)
  3. {
  4.     return a + b;
  5. }
  6. // 导出变量
  7. extern "C" __declspec(dllexport) int globalVar = 100;
复制代码

【程序1源文件 Program1.cpp】
  1. #include <iostream>
  2. #include "Project.h"
  3. int main()
  4. {
  5.     int result = Add(10, 20);
  6.     std::cout << "Result: " << result << std::endl;
  7.     std::cout << "Global variable: " << globalVar << std::endl;
  8.     return 0;
  9. }
复制代码

【程序2源文件 Program2.cpp】
  1. #include <iostream>
  2. #include "Project.h"
  3. int main()
  4. {
  5.     int result = Add(30, 40);
  6.     std::cout << "Result: " << result << std::endl;
  7.     std::cout << "Global variable: " << globalVar << std::endl;
  8.     return 0;
  9. }
复制代码

将上述代码分别保存为Project.cpp、Project.h、Program1.cpp和Program2.cpp,并创建相关项目,编译运行后,你将看到两个程序分别调用DLL中的函数和访问共享变量。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-4 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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