在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
分享到:
相关推荐
2. **LoadLibrary** 和 **GetProcAddress**:FuncScan2的核心功能可能就是通过这两个API函数来实现的。`LoadLibrary`用于加载指定路径的DLL文件,返回一个模块句柄,这个句柄是后续操作的基础。`GetProcAddress`则...
在【压缩包子文件的文件名称列表】中,"二代证阅读器VB_DEMO源码和DLL文件"表明压缩包内含有两个主要部分:一是VB源码,这将包含一个或多个.vb文件,这些文件包含了VB代码,展示了如何调用DLL进行身份证读取;...
描述中提到的"已经编译好的GEOTIFF的Debug和Release库"意味着这个压缩包内含有可链接的库文件(lib)和动态链接库文件(dll),这些都是开发者在编写程序时需要调用GeoTIFF功能所必需的。此外,还包含了头文件...
-修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页...
3. **路径名称过长**:Windows系统中,如果路径过长(超过260个字符),也可能导致加载失败。此外,Windows还存在对8.3格式短文件名的支持问题,如果路径中含有非ASCII字符或者路径过长,可能会触发此问题。 4. **...
Q:我看到了两个可执行文件,应该怎样使用它们? A:直接运行ntleac.exe,或者为它建立一个快捷方式,并在命令行的末尾填上目标程序的全路径名。关于参数的详细说明请参考附录,在新的版本中您还可以使用名为...
创建/修改/删除文件(.exe)")对于阻止自身从一个共享资源复制 到另一个共享资源的病毒非常有效。但是,它们也可能会阻挡那些依 靠将文件推入工作站进行工作的管理系统。例如,在 ePolicy Orchestrator ...
(注意是两个等号) 如if "%1"=="a" format a: if {%1}=={} goto noparms if {%2}=={} goto noparms 2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如if exist ...
和 /help**:这两个选项用于显示编译器的帮助信息,帮助开发者了解可用的参数和它们的作用。 3. **/addmodule**:此参数允许将一个或多个模块合并到编译的程序集中,使得模块中的类型信息可用于编译后的程序。运行...
在提供的压缩包文件中,有两个关键文件:`WinDjView-0.5-zh_CN.dll` 和 `WinDjView-0.5.exe`。`WinDjView`是这款阅读器的名称,而`.dll`(动态链接库)文件是Windows操作系统中的一个重要组件,通常包含了一些程序...
在C#等语言中,当开发一个应用时,Visual Studio会生成一个PE(Portable Executable)文件,即EXE或DLL,这实际上就是程序集。程序集不仅包含了可执行代码,还含有元数据,这些元数据详细描述了程序集内部的版本信息...
(但是请注意:两个不同但结构上等效的委托类型的实例可能会比较为相等),准确地说,两个具有相同参数列表、签名和返回类型的不同的委托类型被认为是不同的委托类型。委托实例所封装的方法集合称为调用列表。 5, ...
- **答案解析**:根据题目给出的版本号“2.0.1.12”和“2.0.0.12”,前两个数字相同,因此这两个程序集是兼容的。正确答案是**B、B是A的完全兼容版本**。 #### 4. 类SomeClass定义如下: ```csharp class ...
在提供的压缩包子文件名称列表中,有两个目录——`x86`和`x64`,分别对应32位和64位的库文件。每个目录下应该包含`Debug`和`Release`子目录,这些子目录下有对应的`.lib`和`.dll`文件。调试版本的库通常在开发和测试...
压缩包中的文件提供了运行示例、理解和学习CefGlue的资源,包括具体的使用说明和两个网址示例,以及必要的库文件。对于想要在.NET应用中集成Web功能的开发者来说,这是一个非常有价值的参考资料。
该安装包有32位和64位两种,应根据你的操作系统选择合适的版本。 **配置步骤:** 1. 安装并配置Appserv(一个集成的Web开发环境,包含Apache、PHP和MySQL等)。 2. 解压缩SQL Server Driver for PHP 2.0,将含有...
-增加TabStrip中Tab控件可关闭属性EnableClose(默认为false)以及两个方法GetShowReference和GetHideReference(feedback:anson)。 -修正绑定到Tree的XMLDocument中Icon属性映射错误(feedback:nopnop9)。 -修正...
从ASP网站登录到UniGUI涉及跨平台的认证机制,需要在两个系统之间实现用户身份验证的同步。 #### 48. UniGUI数据库初始化要放到MainModule里 将数据库初始化逻辑放在`MainModule`中是合理的做法,因为该模块在整个...
文档提到代码运行需要加载“hadoop.dll”本地库,这表明本代码示例在Windows环境下开发,而Hadoop原生是基于Linux系统的,所以在Windows上运行Hadoop MapReduce作业可能需要额外的配置和适配。 总结来说,该文档...
in_这两个CAB格式的文件,将解压缩得到的“iis.dll”改名为“iis2.dll”,复制到“C:\Windows\system32\setup\”目录下;将 “iis. inf”改名为“iis2.inf”,复制到“C:\Windows\inf\”目录下。 步骤3 打开控制...