visual studio 2010 -如何重新导出CLR c++静态库
visual studio 2010 - How to reexport CLR c++ static library
我有这些文件:
- foo.dll
- foo.lib
- foo.exp
- bar.il
- bar.netmodule
"foo"在其导出目录中定义函数。
我也有一个Visual Studio 2010 c++项目,它将创建一个托管的"bar.dll"
我想"bar"静态链接到"foo"和重新导出从"foo"的所有函数。
最后,我希望bar导出foo中的函数和foo中定义的一些附加代码。
使用下面的代码不起作用,因为它引用了foo而不是将bar与foo合并。
#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
call "C:Program FilesMicrosoft Visual Studio 10.0VCbinlink.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
我明白了。
相反,这些文件是必需的:
- foo。obj
- bar.cpp
- bar.obj
c++/CLI编译器cl.exe将能够编译bar,参考非托管和托管世界。
在后面的步骤中,将使用链接器将obj文件合并到一个混合模式程序集中,其中包含:
- 来自foo的非托管导出
- 栏的非托管导出
- 从栏 管理IL类型
链接obj文件的命令:
call "C:Program FilesMicrosoft Visual Studio 10.0VCbinlink.exe" /DLL /LTCG /CLRIMAGETYPE:IJW /OUT:bar.dll *.obj
额外:您可以根据自己的喜好将导出的函数名重命名为cpp后的obj编译目录:)
相关文章:
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何停止 CLR 主机?
- C++项目编译强制使用 /clr 选项,尽管在没有公共语言运行时支持的情况下执行它
- 在我的 CLR 项目中添加包含会导致无法在启用 /clr 的情况下编译 WLR
- C++ CLR dll 需要 .lib 文件,但非 CLR 不需要
- <mutex> 使用 /clr 或 /clr:pure 编译时不支持
- C3193:__clrcall 需要提升标头上的 /clr 或 /ZW 命令行选项
- CLR dll 无法运行托管 DLL,除非它位于 exe 目录(或其子目录)内
- 从CLR GUI实现非托管班级时,stackoverflow异常提出
- 如何解决在 clr 项目的特定文件中写入数据的问题?
- 使用 /clr 或 clr:pure (cpprestsdk aka casablanca) 编译时不支持互斥
- 我应该如何使用SQL Server CLR来使用由C++ / C编译的UDT
- C++/CLR 托管单元测试存在链接器错误
- 在 /clr 中使用非托管 c++ 对象
- C#C /CLR处理REF参数和字符串指针
- 在Visual Studio 2015中,哪些选择(如果有的话)表示 /CLR
- C++/CLR:仅在编译 x86 时出现命令行错误
- 在 C++/CLR 中使用 ffmpeg 库流式传输音频,avcodec_fill_audio_frame返回 -22
- clr 如何使用本机 c++ dll 的引用'&'参数调用函数?
- C++/Clr 中C++全局实例上的多线程