首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重新导出CLR c++静态库

如何重新导出CLR c++静态库
EN

Stack Overflow用户
提问于 2011-04-05 12:39:53
回答 1查看 919关注 0票数 2

我有这些文件:

  • foo.dll
  • foo.lib
  • foo.exp
  • bar.il
  • bar.netmodule

"foo“在其导出目录中定义函数。

我还有一个Visual 2010 C++项目,它将创建一个托管的"bar.dll“

我希望"bar“静态链接到"foo”,从"foo“重新导出所有函数。

最后,我希望barfoofoo中定义的一些附加代码导出函数。

使用下面的代码不起作用,因为它引用了foo,而不是将barfoo合并。

代码语言:javascript
复制
#pragma comment(linker, "/include:_foomethod@12")

我该怎么做?

另见:http://msdn.microsoft.com/en-us/library/f0z8kac4(v=VS.100).aspx

验证导出目录的CFF:http://www.ntcore.com/exsuite.php

另见:http://msdn.microsoft.com/en-us/library/k669k83h.aspx

另见:http://blogs.msdn.com/b/texblog/archive/2007/04/05/linking-native-c-into-c-applications.aspx

代码语言:javascript
复制
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\link.exe" /DLL /LTCG /CLRIMAGETYPE:IJW   /ASSEMBLYMODULE:bar.netmodule   /OUT:bar.dll foo.lib bar.netmodule

foo.netmodule : fatal error LNK1302: only support linking safe .netmodules; unable to link ijw/native .netmodule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-06 19:51:40

我已经想明白了。

相反,这些文件将被要求:

  • bar.cpp

  • bar.obj

  • foo.obj foo.obj

C++/CLI编译器cl.exe将能够编译条形图、引用非托管世界和托管世界。

在后面的步骤中,链接器将用于将obj文件合并为一个混合模式程序集,其中包括:

foo

  • unmanaged的
  • 非托管导出来自bar的
  • 管理来自bar

的IL类型

用于链接obj文件的命令:

代码语言:javascript
复制
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\link.exe" /DLL /LTCG /CLRIMAGETYPE:IJW     /OUT:bar.dll *.obj

Extern外:您可以在cpp之后重命名导出的函数名,以使导出目录中的obj编译符合他们的要求:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5551961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档