VS 2008中的构建代理/存根dll

问题描述 投票:4回答:2

我有一个从VC6迁移到VS 2008的ATL COM项目。如何在VS2008上构建PS DLL?

VS 2008中的新ATL项目有一个单独的PS项目,该项目构建PS DLL。但是从VC6迁移并没有创建此项目。

我试图在PS mk文件上调用nmake,但是对于源文件和自动包含的Windows头文件中都存在的枚举类型,它给出了重新定义错误。在解决方案中,我们通过定义WIN32_LEAN_AND_MEAN预处理程序来解决此问题,该预处理程序排除了不必要的头文件。我可以在使用nmake时做同样的事情吗?

还有其他创建PS DLL的方法吗?

visual-studio-2008 migration atlcom
2个回答
3
投票

Eran的建议似乎合乎逻辑,但我无法找到他正在谈论的一些内容。所以我尝试了另一种方法。

[我在VS 2008中创建了一个空的ATL(服务器)项目。这会自动创建一个与普通atl项目一起的ps项目。

我将ps项目的vcproj文件复制到我的项目文件夹中,并将其重命名为myprojectname ps.vcproj。

然后打开解决方案,并将新复制的项目添加到其中。我将项目(在VS 2008中)重命名为myprojectname ps,并删除了其中已包含的所有文件。

下一步,我将我的_ i.c,_p.c,dlldata.c。def文件包含到项目中。在链接器>输入>模块定义文件下的设置中,我添加了def文件名。

就是这样!像魅力一样运作。


1
投票

自完成以来已经有一段时间了,即使那时我也没有任何最新的说明,但是现在回头看一下项目,我将尝试重构该过程:

  1. 为PS创建一个新的空DLL项目。不需要MFC或ATL。
  2. 将以下文件添加到项目中:proj _ h.h,proj _ i.c,proj _ p.c,proj。def,dlldata.c
  3. 在项目设置中,将以下库添加到其他依赖项中:rpcndr.lib,rpcns4.lib,rpcrt4.lib
  4. 在项目设置中,将def文件指定为模块定义文件。
  5. 在项目设置中,将“生成无桩代理”设置为是。
  6. 在项目设置中,将tlb文件设置为服务器项目生成的文件

这是我对我的项目进行事后检验所能得到的。我可能已经跳过了一些步骤,可能会有更好的方法来做到这一点。 OTOH,生成的PS没有任何问题,您也许可以随心所欲地填补空白。如果您尝试这样做并发现任何遗漏,请添加评论以供将来参考。

© www.soinside.com 2019 - 2024. All rights reserved.