DLL相互导入的问题参见http://msdn.microsoft.com/zh-cn/library/fdy23fx6.aspx,以下为VS2010中的解决方法。
一、设置DllA项目的属性
1.常规-->配置类型->静态库(.lib)
2.库管理器-->命令行-->其他选项-->/DEF(以便生成DllA.exp)
二、设置DllB项目的属性
1.常规-->配置类型->动态库(.dll)
2.自定义生成步骤-->命令行-->
Link.exe /ERRORREPORT:PROMPT ^
/OUT:$(OutDir)\DllA.dll /NOLOGO ^
/LIBPATH:$(OutDir) /DEBUG ^
/SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT ^
/MACHINE:X86 /DLL ^
$(OutDir)\DllA.exp ^
$(OutDir)\DllB.lib ^
$(SolutionDir)DllA\Debug\DllA.obj ^
$(SolutionDir)DllA\Debug\dllmain.obj ^
$(SolutionDir)DllA\Debug\stdafx.obj
自定义生成步骤-->说明-->生成 DllA.dll
自定义生成步骤-->输出-->DllA.dll
自定义生成步骤-->在以下操作之后执行-->FinalizeBuildStatus
三、生成解决方案
1. Lib.exe DllA.obj /DEF --> DllA.lib, DllA.exp
2. Link.exe DllB.obj DllA.lib --> DllB.lib, DllB.exp, DllB.dll
Link.exe DllA.exp DllB.lib --> DllA.dll
3. Link.exe main.obj DllA.lib DllB.lib --> main.exe