Visual studio 从DLL依赖自己的导入库,如何避免?

Visual studio 从DLL依赖自己的导入库,如何避免?,visual-studio,visual-studio-2010,dll,msbuild,Visual Studio,Visual Studio 2010,Dll,Msbuild,我正在从IDL文件构建一个代理/存根库,出于某种原因,构建驱动程序认为链接期间生成的导入库是链接的输入文件,导致每次都重新链接项目(为了可读性而缩短路径名): 该项目设置为普通DLL项目,保留默认设置。你知道为什么MSBuild决定将这些生成的文件作为输入处理,以及我如何解决这个问题吗?这是一个无稽之谈,但值得一看 打开vcxproj文件并查找@(Midl)项。通过尝试以下三项元数据中的一项进行修改,并查看行为如何变化,这可能会使您走上正确的道路: <Midl Include="My.

我正在从IDL文件构建一个代理/存根库,出于某种原因,构建驱动程序认为链接期间生成的导入库是链接的输入文件,导致每次都重新链接项目(为了可读性而缩短路径名):


该项目设置为普通DLL项目,保留默认设置。你知道为什么MSBuild决定将这些生成的文件作为输入处理,以及我如何解决这个问题吗?

这是一个无稽之谈,但值得一看

打开vcxproj文件并查找@(Midl)项。通过尝试以下三项元数据中的一项进行修改,并查看行为如何变化,这可能会使您走上正确的道路:

  <Midl Include="My.idl">
    <LinkCompiled>false</LinkCompiled>
    <LibCompiled>false</LibCompiled>
    <ImpLibCompiled>false</ImpLibCompiled>
  </Midl>

假的
假的
假的

“VersionControl”是代理/存根DLL的一个不寻常的名称。我的水晶球说,您的主要COM服务器项目也被命名为“VersionControl”。不,这只是接口名称。目前,唯一的实现存在于主应用程序中,COM仅用于将长时间运行的操作移动到单独的线程中。在某个时候,我计划将代码拆分成一个单独的DLL,该DLL将以它所连接的VC系统命名,并注册到一个类别中。我通常构建一个包含接口IDL的项目,该项目将构建P/S库,每个实现都从那里导入IDL并定义
coclass
es。是否有可能您错过了一个#define,而意外地将自己的一些函数\u declspec(dllimport)重新定义?或者类似地,对于包含在DLL构建中的代码中的.lib,您有一个
@pragma(comment,lib)
?我会尝试对头文件的所有导入部分出错。(或者这只是从IDL生成的存根代码?)这只是存根代码,加上一个
.def
文件以导出常见的可疑文件。
  <Midl Include="My.idl">
    <LinkCompiled>false</LinkCompiled>
    <LibCompiled>false</LibCompiled>
    <ImpLibCompiled>false</ImpLibCompiled>
  </Midl>