-
-
[求助]奇怪的加载动态库的方法,请大家帮忙分析下
-
发表于:
2007-9-24 23:11
4917
-
我知道加载DLL的方法,基本上即:静态和动态,另还算上个延时加载
但最近看到一个别人的工程,在调用另一个DLL中的方法时,既没有用静态方法也没用动态方法,但却神奇的调用了那个动态库内的方法,百思不得其解,后来身边的高手解释说时该工程将动态库的LIB文件已资源形式添加到工程中了,而不是用常规方法。不清楚哪位高手能给予更详尽的解释,谢谢了:)
下面已简单示例对本问题描述:
DLL工程:
//dll3.h
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
MYLIBAPI int g_nResult;
MYLIBAPI int Add(int nLeft, int nRight);
//dll3.cpp
#include <windows.h>
#define MYLIBAPI extern "C" __declspec(dllexport)
#include "dll3.h"
int g_nResult;
int Add(int nLeft, int nRight)
{
g_nResult = nLeft + nRight;
return g_nResult;
}
//调用DLL3的测试工程
#include <windows.h>
#include "..\dll3\dll3.h"
//#pragma comment( lib, "dll3")/*常规做法我们编写此行代码,但若去掉此代码,在VC6环境下,我们对本工程以添加文件的方式将dll3.lib文件添加到工程中(它出现在resource files文件夹内),可以通过编译并正常执行,期待高手指点这是其中原由:)*/
void main()
{
int nLeft = 1, nRight = 2;
TCHAR sz[10];
wsprintf(sz, TEXT("%d + %d = %d"),nLeft, nRight, Add(nLeft, nRight));
MessageBox(NULL, sz, TEXT("数值计算"), MB_OK);
}
[注意]APP应用上架合规检测服务,协助应用顺利上架!