`
Aoogoo
  • 浏览: 21529 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

两个.exe含有相同的名称的dll, 到底加载几次?

阅读更多
在CodeGuru上看到一个有意思的提问:
两个Application: appOne.exe和appTwo.exe。如果两个Application要使用Windows系统提供的dll文件,只要加载一次就够了。但是如果它们各自都有一个“名字相同”的dll文件,比如commom.dll。应该加载几次呢?
我请教了一个Senior的同事,他说加载一次就够了。我追问,如果这两个dll功能不一样怎么办?他就不屑回答了。好吧,我只能做个试验。

1. 开发两个名字相同的dll,就叫commom.dll.dll就保留一个方法print出来。其中一个由appOne.exe调用,打印"This is app1.exe";另外一个由appTwo.exe调用,打印"This is app2.exe"。这里只贴出其中一个的代码:
common.h
#pragma once

#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;

extern "C" __declspec(dllexport) void print();

common.cpp
#include "common.h"

extern "C" __declspec(dllexport)
void print(){
    cout<<"This is app1.exe"<<endl;
}

2. 开发两个Application: appOne.exe, appTwo.exe。它们分别调用前面common.dll中的print方法。
为了保证它们在某个时段都运行在内存中,我们在调用完之后让其睡眠1分钟。
Main.cpp
#include "common.h"
#pragma comment(lib, "C:\\Users\\binwang.ASIAPACIFIC\\Documents\\Visual Studio 2008\\Projects\\common\\Debug\\common.lib") 

void main(){
    print();
    ::Sleep(1000*60);
}

3. 分别运行appOne.exe和appTwo.exe
看到没有,它们分别调用自己的dll。


  • 大小: 74.7 KB
0
0
分享到:
评论

相关推荐

    搜索DLL中特定函数的程序

    2. **LoadLibrary** 和 **GetProcAddress**:FuncScan2的核心功能可能就是通过这两个API函数来实现的。`LoadLibrary`用于加载指定路径的DLL文件,返回一个模块句柄,这个句柄是后续操作的基础。`GetProcAddress`则...

    ID_Reader-Dll-and-VB_DEMO-code-.rar_DEMO_vb dll

    在【压缩包子文件的文件名称列表】中,"二代证阅读器VB_DEMO源码和DLL文件"表明压缩包内含有两个主要部分:一是VB源码,这将包含一个或多个.vb文件,这些文件包含了VB代码,展示了如何调用DLL进行身份证读取;...

    GeoTIFF.zip

    描述中提到的"已经编译好的GEOTIFF的Debug和Release库"意味着这个压缩包内含有可链接的库文件(lib)和动态链接库文件(dll),这些都是开发者在编写程序时需要调用GeoTIFF功能所必需的。此外,还包含了头文件...

    ExtAspNet_v2.3.2_dll

    -修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页...

    解决windows下安装Apache+PHP出现LoadModule takes two

    3. **路径名称过长**:Windows系统中,如果路径过长(超过260个字符),也可能导致加载失败。此外,Windows还存在对8.3格式短文件名的支持问题,如果路径中含有非ASCII字符或者路径过长,可能会触发此问题。 4. **...

    NT Locale Emulator Advance (中文名稱: NT全域通)

    Q:我看到了两个可执行文件,应该怎样使用它们? A:直接运行ntleac.exe,或者为它建立一个快捷方式,并在命令行的末尾填上目标程序的全路径名。关于参数的详细说明请参考附录,在新的版本中您还可以使用名为...

    McAfee 8.0 简体中文

    创建/修改/删除文件(.exe)")对于阻止自身从一个共享资源复制 到另一个共享资源的病毒非常有效。但是,它们也可能会阻挡那些依 靠将文件推入工作站进行工作的管理系统。例如,在 ePolicy Orchestrator ...

    如何编写批处理文件批处理文件批处理文件

    (注意是两个等号) 如if "%1"=="a" format a: if {%1}=={} goto noparms if {%2}=={} goto noparms 2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如if exist ...

    CSC编译参数[归类].pdf

    和 /help**:这两个选项用于显示编译器的帮助信息,帮助开发者了解可用的参数和它们的作用。 3. **/addmodule**:此参数允许将一个或多个模块合并到编译的程序集中,使得模块中的类型信息可用于编译后的程序。运行...

    djvy0.5阅读器汉化版

    在提供的压缩包文件中,有两个关键文件:`WinDjView-0.5-zh_CN.dll` 和 `WinDjView-0.5.exe`。`WinDjView`是这款阅读器的名称,而`.dll`(动态链接库)文件是Windows操作系统中的一个重要组件,通常包含了一些程序...

    程序集和全局程序集缓存.doc

    在C#等语言中,当开发一个应用时,Visual Studio会生成一个PE(Portable Executable)文件,即EXE或DLL,这实际上就是程序集。程序集不仅包含了可执行代码,还含有元数据,这些元数据详细描述了程序集内部的版本信息...

    c#学习笔记.txt

    (但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。 5, ...

    c#微软试题

    - **答案解析**:根据题目给出的版本号“2.0.1.12”和“2.0.0.12”,前两个数字相同,因此这两个程序集是兼容的。正确答案是**B、B是A的完全兼容版本**。 #### 4. 类SomeClass定义如下: ```csharp class ...

    zlib 1.2.11 vs2019编译的库

    在提供的压缩包子文件名称列表中,有两个目录——`x86`和`x64`,分别对应32位和64位的库文件。每个目录下应该包含`Debug`和`Release`子目录,这些子目录下有对应的`.lib`和`.dll`文件。调试版本的库通常在开发和测试...

    cef CefGlue.Demo.WinForms

    压缩包中的文件提供了运行示例、理解和学习CefGlue的资源,包括具体的使用说明和两个网址示例,以及必要的库文件。对于想要在.NET应用中集成Web功能的开发者来说,这是一个非常有价值的参考资料。

    PHP连接SQL SERVER 2005与2008的配置1

    该安装包有32位和64位两种,应根据你的操作系统选择合适的版本。 **配置步骤:** 1. 安装并配置Appserv(一个集成的Web开发环境,包含Apache、PHP和MySQL等)。 2. 解压缩SQL Server Driver for PHP 2.0,将含有...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -增加TabStrip中Tab控件可关闭属性EnableClose(默认为false)以及两个方法GetShowReference和GetHideReference(feedback:anson)。 -修正绑定到Tree的XMLDocument中Icon属性映射错误(feedback:nopnop9)。 -修正...

    UniGUI集合说明

    从ASP网站登录到UniGUI涉及跨平台的认证机制,需要在两个系统之间实现用户身份验证的同步。 #### 48. UniGUI数据库初始化要放到MainModule里 将数据库初始化逻辑放在`MainModule`中是合理的做法,因为该模块在整个...

    案例TF-IDF.pdf

    文档提到代码运行需要加载“hadoop.dll”本地库,这表明本代码示例在Windows环境下开发,而Hadoop原生是基于Linux系统的,所以在Windows上运行Hadoop MapReduce作业可能需要额外的配置和适配。 总结来说,该文档...

    IIS6.0 IIS,互联网信息服务

    in_这两个CAB格式的文件,将解压缩得到的“iis.dll”改名为“iis2.dll”,复制到“C:\Windows\system32\setup\”目录下;将 “iis. inf”改名为“iis2.inf”,复制到“C:\Windows\inf\”目录下。 步骤3 打开控制...

Global site tag (gtag.js) - Google Analytics