xto*_*ofl 24 c++ visual-studio
使用VisualStudio生成COM dll时,我真正需要的是DllCanUnloadNow从dll本身导出的符号(以及三个相关的符号). 没有人会链接到我的库,所以我(根本没有)对.lib文件或.exp文件感兴趣.
但是,我没有设法禁止创建这些文件.(注意:我确实知道在构建后的步骤中如何删除它们)
这些是我的链接器参数:
/OUT:"u:/cada-nt/bin/PData.dll"
/INCREMENTAL:NO
/NOLOGO
/DLL
/MANIFEST:NO
/DEF:"PData.def"
/DEBUG
/PDB:"u:/cada-nt/pdb/PData.pdb"
/ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
odbc32.lib odbccp32.lib
Run Code Online (Sandbox Code Playgroud)
问题:
gar*_*kin 16
Visual Studio的链接器有一个/IMPLIB选项,允许您指定.lib和.exp文件的输出位置.
您可以在项目的属性中修改此选项:
Configuration Properties > Linker > Advanced > Import Library
Run Code Online (Sandbox Code Playgroud)
您可以将其设置为以下内容,例如:
$(Configuration)\$(TargetName).lib
Run Code Online (Sandbox Code Playgroud)
链接器将.exp使用与其相同的名称创建文件.lib.
小智 5
COM 库中有一些函数声明为 __declspec(dllexport)。这意味着它们被导出(可能被GetProcAdress函数使用)并且链接器认为需要链接到这个动态库(无论是exe还是dll - 一般来说结构是相同的)并创建*.lib和 *.exp 文件。
为了避免创建这些文件,您需要从函数声明中删除所有 __declspec(dllexport)
Goz*_*Goz -6
为什么生成这些文件会出现问题?当然,如果人们不打算直接链接到它们,那么您所需要做的就是不分发这些文件,而只分发 DLL。
| 归档时间: |
|
| 查看次数: |
8563 次 |
| 最近记录: |