// 09DllDemo.cpp : Defines the entry point for the DLL application.
//#include "stdafx.h"
#include "09DllDemo.h"
#include <stdio.h>HMODULE g_hModule;BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hModule = (HMODULE)hModule; // 保存模块句柄
break;
}
return TRUE;
}// 自定义导出函数
void ExportFunc(LPCTSTR pszContent)
{
char sz[MAX_PATH];
::GetModuleFileName(g_hModule, sz, MAX_PATH);
::MessageBox(NULL, pszContent, strrchr(sz, '\\') + 1, MB_OK);
}
//上面是cpp文件内容
//h文件内容:
#ifdef MY09DLLDEMO_EXPORTS
#define MY09DLLDEMO_API __declspec(dllexport)
#else
#define MY09DLLDEMO_API __declspec(dllimport)
#endif// 声明要导出的函数
MY09DLLDEMO_API void ExportFunc(LPCTSTR pszContent);
这是 王艳平所写的<<windows程序设计>>一书上的源码、、我试着生成dll文件、、成功生成了,但是却有168KB大小!!而光盘里附带的dll文件却只有28KB、、lib文件只有2KB、、光盘里这两个文件都在Release文件夹下!不是在Debug文件夹下!调用dll的cpp文件,内容如下://////////////////////////////////////////////////
// ImportDemo.cpp文件
#include <windows.h>// 声明函数原形
typedef void (*PFNEXPORTFUNC)(LPCTSTR);int main(int argc, char* argv[])
{
        // 加载DLL库
        HMODULE hModule = ::LoadLibrary("..\\09DllDemo\\Release\\09DllDemo.dll");
        if(hModule != NULL)

// 取得ExportFunc函数的地址
PFNEXPORTFUNC mExportFunc = (PFNEXPORTFUNC)::GetProcAddress(hModule, "ExportFunc");
if(mExportFunc != NULL)
{
mExportFunc("大家好!");
} // 卸载DLL库
::FreeLibrary (hModule);
}

        return 0;
}奇怪的事情发生了、、调用光盘里的28KB的DLL能成功输出“大家好!”,而调用那个168KB的DLL时,却不能输出“大家好!”,我想问题就出在工程设置选项里、、我是直接打开cpp文件,然后稍微在工程设置里改了下、生成的DLL文件,我用的VC6.0版本、、
哪位高手帮忙指教下、、如何设置工程选项设置才能做出那个28KB的DLL啊?!

解决方案 »

  1.   

    HMODULE hModule = ::LoadLibrary("..\\09DllDemo\\Release\\09DllDemo.dll");注意路径。
    还有,release编译
      

  2.   

    路径不是问题、、release编译、、也选择了、、设置没这么简单吧!我这里是直接用vc打开cpp文件的、并没有创建dll工程!!
      

  3.   

    确保工程文件定义的配置类型是“动态库(.dll)”而不是“应用程序(.exe)”(哪怕你后缀名取的是.dll)