Aoogoo  
日历
<2010年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
统计
  • 随笔 - 3
  • 文章 - 0
  • 评论 - 0
  • 引用 - 0

导航

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
在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。



posted on 2010-01-12 14:15 奥古虫 阅读(331) 评论(0)  编辑  收藏 所属分类: C++

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 奥古虫 Powered by: 博客园 模板提供:沪江博客