你不能.如果代码量很小,您可以编写一个C#类并将C++代码片段粘贴到其中,以便您基本上将该类移植到C#中.显然,如果你使用的语言功能或库函数不在C#中,这将不起作用.或者,您需要将C++代码编译为可执行文件(本机DLL,理想情况下是C风格的平面函数或托管程序集),以便您可以从C#代码中调用它.
虽然可能会迟到,但我想回答你的问题,因为我遇到了类似的问题.
您可以通过将C++代码编译为netmodule并将模块添加到CSharp命令行来完成此操作.
长话短说.第一种方式如下:
这里将详细描述这一个.
第二种方式是:
那是在这里发现的
这是第一种方式的csproj的MSBuild设置示例:
<ItemGroup>
<ClCompile Include="CppFile1.cpp" />
<ClCompile Include="CppFile2.cpp" />
</ItemGroup>
<PropertyGroup>
<NetmoduleName>CppCli.netmodule</NetmoduleName>
<ClOptions>/nologo /clr /LN /I"$(SolutionDir)anotherDir" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_DEBUG" /D "_WINDLL" /D "_MBCS" /Od /Gd /MDd </ClOptions>
<LinkOptions>/LTCG /DLL /NOASSEMBLY /NOENTRY /DEBUG /MACHINE:X64 /SUBSYSTEM:WINDOWS /out:$(OutputPath)$(NetmoduleName) another.lib /LIBPATH:"$(SolutionDir)$(Configuration)" /LIBPATH:"anotherDir"</LinkOptions>
</PropertyGroup>
<Target Name="CustomCppBuildStep" Inputs="@(ClCompile)" Outputs="$(NetmoduleName)">
<ItemGroup>
<ClCompileFullName Include="@(ClCompile->'%(fullpath)', ' ')" />
</ItemGroup>
<Message Importance="high" Text="Compiling cpp: @(ClCompileFullName)" />
<Exec Command="$(ComSpec) /c "C:\Progra~2\Micros~3.0\VC\vcvarsall.bat amd64 & cl $(ClOptions) @(ClCompileFullName) /link $(LinkOptions) "" />
</Target>
<Target Name="BeforeBuild">
<CallTarget Targets="CustomCppBuildStep" />
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6742 次 |
| 最近记录: |