我可以在c#项目中添加.h和.cpp文件吗?
我想在C语言项目中添加一些.h和.cp文件,以获得C++中的C++功能。我想直接使用代码而不制作dll我可以在c#项目中添加.h和.cpp文件吗?,c#,c++,C#,C++,我想在C语言项目中添加一些.h和.cp文件,以获得C++中的C++功能。我想直接使用代码而不制作dll 我可以这样做吗?怎么做?不,你不能。如果代码量很小,可以编写C类,并将C++代码粘贴到其中,这样就可以将该类基本移植到C语言中。显然,如果您使用的语言功能或库函数不在C#中,这将不起作用。或者,你需要编译C++代码到可执行的(本地的DLL,理想的C型扁平函数,或者托管程序集),这样你就可以从C代码中调用它。< /P> < P >不,你不能。 你要么要么把代码迁移到C++,要么把C++代码分解成
我可以这样做吗?怎么做?不,你不能。如果代码量很小,可以编写C类,并将C++代码粘贴到其中,这样就可以将该类基本移植到C语言中。显然,如果您使用的语言功能或库函数不在C#中,这将不起作用。或者,你需要编译C++代码到可执行的(本地的DLL,理想的C型扁平函数,或者托管程序集),这样你就可以从C代码中调用它。< /P> < P >不,你不能。
你要么要么把代码迁移到C++,要么把C++代码分解成一个DLL,然后调用C++,如果你已经有C++代码,最好的选择是使用C++ +CLI,其中可以包含.h和.cp文件,并引用你的C项目中的编译的DLL。< /P> < P>。问题,因为我也遇到过类似的问题
可以通过编译NC++模块的C++代码并将该模块添加到CSARP命令行。 长话短说第一种方式如下所示: <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>
CppCli.netmodule
/nologo/clr/LN/I“$(SolutionDir)另一个dir”/D“WIN32”/D“\u WINDOWS”/D“\u USRDLL”/D“\u DEBUG”/D“\u windl”/D“\u MBCS”/Od/Gd/MDd
/LTCG/DLL/NOASSEMBLY/NOENTRY/DEBUG/MACHINE:X64/SUBSYSTEM:WINDOWS/out:$(OutputPath)$(NetmoduleName)other.lib/LIBPATH:$(SolutionDir)$(Configuration)//LIBPATH:$(anotherDir)
为什么会有人否决这个问题?这是一个合法的问题,有人开始使用.NET开发,并希望使用他的C++库。