Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法调试c++;从C#DllImport调用dll? 我想知道是否有任何方法可以从VS 2010中的C?pPnECK调用C++ DLL。我试图将该项目附加到c#应用程序中,但没有成功——没有在断点处停止 我也尝试用C++中的OutuDebug字符串记录任何东西,但是没有用PInvoke调用打印。尽管存在这些问题,但实际功能运行良好 任何建议都会被赏识。 < P>如果在程序运行时运行C++调试器,然后转到调试->附加到进程->查找进程并附加到它。您应该能够调试它_C#_C++_Pinvoke - Fatal编程技术网

有没有办法调试c++;从C#DllImport调用dll? 我想知道是否有任何方法可以从VS 2010中的C?pPnECK调用C++ DLL。我试图将该项目附加到c#应用程序中,但没有成功——没有在断点处停止 我也尝试用C++中的OutuDebug字符串记录任何东西,但是没有用PInvoke调用打印。尽管存在这些问题,但实际功能运行良好 任何建议都会被赏识。 < P>如果在程序运行时运行C++调试器,然后转到调试->附加到进程->查找进程并附加到它。您应该能够调试它

有没有办法调试c++;从C#DllImport调用dll? 我想知道是否有任何方法可以从VS 2010中的C?pPnECK调用C++ DLL。我试图将该项目附加到c#应用程序中,但没有成功——没有在断点处停止 我也尝试用C++中的OutuDebug字符串记录任何东西,但是没有用PInvoke调用打印。尽管存在这些问题,但实际功能运行良好 任何建议都会被赏识。 < P>如果在程序运行时运行C++调试器,然后转到调试->附加到进程->查找进程并附加到它。您应该能够调试它,c#,c++,pinvoke,C#,C++,Pinvoke,确保已使用调试器符号编译DLL。(.pdb)文件,并且它们位于运行内容的目录中。附加时,将“附加到”值更改为“本机”。进程不应在托管代码调试器下运行-使用“Run”命令启动,而不是“Debug” 此外,DLL需要使用调试信息进行编译,以便进行任何合理的调试。确保您没有调用发布版本 不管调试模式如何,OutputDebugString()都应该工作。两者都需要打开相同的选项:项目>属性>调试选项卡>勾选“启用非托管代码调试”选项 现在,您可以在本机DLL代码中设置断点,只要C#项目加载DLL,断点

确保已使用调试器符号编译DLL。(.pdb)文件,并且它们位于运行内容的目录中。

附加时,将“附加到”值更改为“本机”。进程不应在托管代码调试器下运行-使用“Run”命令启动,而不是“Debug”

此外,DLL需要使用调试信息进行编译,以便进行任何合理的调试。确保您没有调用发布版本


不管调试模式如何,OutputDebugString()都应该工作。

两者都需要打开相同的选项:项目>属性>调试选项卡>勾选“启用非托管代码调试”选项


现在,您可以在本机DLL代码中设置断点,只要C#项目加载DLL,断点就会从空心变为实心。由于使用了非托管调试引擎,OutputDebugString()输出将转到输出窗口。

这可能会有所帮助,但看起来您需要.pdb文件来执行任何有意义的操作:@JeffE当然,项目有.pdb文件,但这并不重要。请参见Hans's answer.BTW,您可以在DLL中打印消息。但要在控制台中查看这些消息,必须在调试模式下构建DLL。还必须在启动项目的属性中设置此选项,而不仅仅是在使用非托管代码的项目上。