我有兴趣将单个.cpp文件(包含本机代码和托管代码)组合到一个更大的C#项目中。我不想为CPP代码使用单独的DLL,因为仅仅为几行代码“浪费”整个DLL似乎很愚蠢,并且因为代码具有一些安全功能,我宁愿混淆通过将其隐藏在更大的组件中来实现。 (在有人建议之前,我不能使用ILmerge或AL,因为它们不适用于本机代码。)
编译.cpp和.cs文件组的基本过程已被覆盖了几次;领先的候选人建议似乎是:
然而,这些(以及我能找到的所有相关链接)都只涉及在命令行上构建。
我宁愿改变我现有的.csproj文件来编译和链接C ++代码(我不介意C ++构建本身在一个单独的.vcproj中,但如果不是更好,但链接必须在.csproj),并且可以在VS2008中构建所有内容,以便项目用户不需要知道差异。
不幸的是,我似乎无法从VS编译的.csproj中成功调用link.exe。带有“链接”的“Exec”元素找不到可执行文件,因为它不在PATH中。明确指定位置(“$(DevEnvDir).... \ VC \ bin \ link”)确实开始运行它但它立即失败并显示错误代码,指示它无法加载它需要的库(可能是因为再次,它不在PATH中。
是否有任何从Visual Studio中的csproj成功调用LINK的示例?
编辑:好的,我现在已经设法解决了这个问题,并且所有内容都在编译,链接和正常运行 - 在发布模式下。它似乎仍然在调试模式下运行正常,但由于某种原因,它的SxS清单(LINK
生成但我不得不通过mt
手动应用)仅指版本CRT,而不是DebugCRT。任何想法如何解决?
答案 0 :(得分:0)
当您使用使用Debug配置构建的obj和lib文件进行链接时,它应该引用DebugCRT。
您的命令行是什么样的?