.net 调用C++;VS2008中csproj的链接
我感兴趣的是将单个.cpp文件(包含本机代码和托管代码)合并到一个更大的C#项目中。我不想为CPP代码使用单独的DLL,因为仅仅几行代码“浪费”整个DLL似乎很愚蠢,而且因为代码有一些安全功能,我更愿意通过将其隐藏在更大的程序集中来模糊一点。(在有人建议之前,我不能使用ILmerge或AL,因为它们不适用于本机代码。) 编译.cpp和.cs文件组的基本过程已经介绍了几次;主要的候选人建议似乎是:.net 调用C++;VS2008中csproj的链接,.net,visual-studio,msbuild,linker,csproj,.net,Visual Studio,Msbuild,Linker,Csproj,我感兴趣的是将单个.cpp文件(包含本机代码和托管代码)合并到一个更大的C#项目中。我不想为CPP代码使用单独的DLL,因为仅仅几行代码“浪费”整个DLL似乎很愚蠢,而且因为代码有一些安全功能,我更愿意通过将其隐藏在更大的程序集中来模糊一点。(在有人建议之前,我不能使用ILmerge或AL,因为它们不适用于本机代码。) 编译.cpp和.cs文件组的基本过程已经介绍了几次;主要的候选人建议似乎是: 然而,这两个(以及我能找到的所有相关链接)都只涉及在命令行上构建 我宁愿改变现有的.cPro
编辑:好的,我现在已经设法解决了这个问题,一切都在编译、链接和运行良好——处于发布模式。它似乎在调试模式下运行正常,但出于某种原因,它的SxS清单(它是
LINK
生成的,但我必须通过mt
手动应用)仅指发布CRT,而不是调试CRT。有没有办法解决这个问题?当您使用使用调试配置构建的obj和lib文件进行链接时,它应该引用DebugCRT
您的命令行是什么样子的?当您使用使用调试配置生成的obj和lib文件进行链接时,它应该引用DebugCRT
您的命令行是什么样子的?是的,您必须使用set path=%path%设置路径;等等。更严重的障碍是IDE不允许您指定/module compile选项。您必须破解msbuild。我曾考虑过这样做,但无法找到正确的语法(在Exec元素内部或外部)。我不想为此创建批处理文件,这看起来很笨拙。我尝试的方法是重写CoreCompile目标;到目前为止,这似乎是可行的。这算是黑客攻击msbuild吗?(此处进行了编辑,因此上述讨论不再适用)是的,您必须使用set path=%path%设置路径;等等。更严重的障碍是IDE不允许您指定/module compile选项。您必须破解msbuild。我曾考虑过这样做,但无法找到正确的语法(在Exec元素内部或外部)。我不想为此创建批处理文件,这看起来很笨拙。我尝试的方法是重写CoreCompile目标;到目前为止,这似乎是可行的。这算是黑客攻击msbuild吗?(此处进行了编辑,因此上述讨论不再适用)