NZND 发表于 2020-9-12 21:59:02

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

最近我在写一个程序,里面有两个程序需要共享同一个DLL,求解决!

xieglt 发表于 2020-9-17 14:10:47

要共享什么?DLL本身就是可共享的,是要共享数据吗?
用内存映射文件共享啊,不过两个程序共享一段数据,要注意线程同步。

zzxhh628 发表于 2022-3-16 23:22:24

就直接加载那个dll就行,dll可以被多个程序使用。

小甲鱼的二师兄 发表于 2023-11-28 05:36:57

一个程序,里面有两个程序需要共享同一个DLL。

应该如何操作?

请给出具体的案例。

@FishC_GPT

FishC_GPT 发表于 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官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 一个很麻烦的问题,求解决!很急!!!