【发布时间】:2013-06-19 11:52:20
【问题描述】:
我有一个用 c# 编写的测试应用程序,它调用 c++/cli 中的函数。
c++/cli 函数然后调用 c++ 代码中的函数。
我有三个项目:
调用c++/cli代码的c#项目。
包含 c++ 代码的 c++/cli 项目。
然后全部构建广告调试。
在 c# 中我有这样的代码:
var myFile=MyFileWrapper.MyFileWrapper.ReadMyFile(@"C:\tmp\MyFile.bin");
在 c++/cli 我有这样的代码:
MyFileWrapper^ MyFileWrapper::ReadMyFile(System::String ^fileName)
{
auto nativeMyFile=MyFile::ReadMyFile((char *) System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(fileName).ToPointer());
MyFileWrapper^ MyFileWrapper=gcnew MyFileWrapper();
int x=nativeMyFile->Width;
// do some work
return MyFileWrapper;
}
在 c++ 中我有这个代码:
MyFile* MyFile::ReadMyFile(char * FileName)
{
auto myFile=new MyFile();
myFile->Width=100;
myFile->Height=200;
return myFile;
}
当我尝试调试系统时,我可以从 C# 代码单步到 c++/cli,但我不能从 C++/CLI 代码单步到 c++ 代码。
当我尝试在 c++/cli 中查看 nativeMyFile 时,我可以看到它的地址,但看不到它的类型或数据(例如 nativeMyFile->Watch window 中的宽度会产生错误。
检查X的值时,为100,表示通过了正确的值。
为什么我不能从 c++/cli 代码进入 C++ 代码?
为什么我不能查看在 c++ 代码中定义的对象?
【问题讨论】:
标签: c# c++ debugging c++-cli visual-studio-debugging