作者dritchie (Dennis MjY3OTk5)
看板C_and_CPP
标题Re: [问题] Load dll问题请教
时间Fri Nov 6 22:31:04 2015
投机一点的做法...
for(int i=0;i<10;i++)
{
wstring name = to_wstring(i)+L".dll";
CreateHardLinkW(name.c_str(), L"MyLib.dll", 0);
HMODULE mod = LoadLibraryW(name.c_str());
printf("%x\n", mod);
}
之後记得FreeLibrary和清掉hard link...
※ 引述《Keitaro (动き出す时间...)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC2008
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: MFC
: 问题(Question):
: 请问是否有办法load同一个dll档,load储存的记忆体位置是不同的?
: 补充说明(Supplement):
: 不好意思小弟上来请教一下各位先进关於dll的问题。
: 我对於dll档案的观念不是很清楚,如果问题太过基本还请各位指教。
: 我接手一个project要改,这个project要去load一个dll档案来做事。
: 这个dll是要跟server连线取得资料,要做的工作全部都写在dll里面。
: 原作者将dll的function在project里面以function pointer来呼叫。
: project只是把UI画出来,当user点选按钮时判断事件,
: 呼叫function pointer,指向dll内部真正实作的function。
: 现在这project要做的事是希望可以同时连好几台server(Multi-Server)。
: 我的想法是如果不要动到这个dll最好,
: 有没有办法重复去load这个dll,放到不同的记忆体位址,
: 这样我就可以分别对这些位址去做处理,
: 甚至把这些function pointer写一个新的class包起来,
: 看要连几台Server就new几个class object,这样就完成了。
: 但是我测试LoadLibrary("XXX.dll")两次回传的位址都是一样的,
: 所以我猜想这样做应该是不行的。
: 请问版上各位先进有没有更好的作法呢?
: 感激不尽。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.240.172.147
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1446820267.A.312.html
1F:推 Keitaro: ....这...我跪了(赞 11/08 02:17