CLI封装native C++接口,托管函数中调用非托管函数 断点进入到nativeC++函数中 鼠标移动到变量上看不见值 需要怎么设置

OrdinaryCoder 2019-05-21 11:07:53
如题,在CLI函数中调用NativeC++函数 断点进入到NativeC++函数中 鼠标移动到变量上看不见值
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复
顶一手
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复
引用 7 楼 stherix 的回复:
[quote=引用 6 楼 OrdinaryCoder 的回复:]
[quote=引用 5 楼 stherix 的回复:]
[quote=引用 4 楼 OrdinaryCoder 的回复:]
在监视窗口提示标识符“变量名”超出范围


无论是普通变量还是结构体都是可以看到的

你是在c#项目中引用cli的dll
调试看不到值的吗[/quote]
是的[/quote]

C#项目右键属性-->调试-->勾选 启用本地代码调试[/quote]
虽然没好使,但是还要谢谢 换条路看看通不通吧
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
HttpApi http = new HttpApi();
UnitQuery unitQuery = new UnitQuery();
unitQuery.key = "27052339";
unitQuery.secret = "A9FvydS2VzTgBBtksLBj";
unitQuery.ip = "221.180.167.226";
unitQuery.port = 4433;
http.CreatQuery(unitQuery);
string str = http.FindIndexCodesOfAppKey(unitQuery);
Console.WriteLine(str);
Console.ReadKey();
}

C#代码

System::String^ Http_ApiDLL::HttpApi::FindIndexCodesOfAppKey(UnitQuery^ unitquery)
{
string str = ::FindIndexCodesOfAppKey(*query);
return marshal_as<String^>(str);
}

CLI代码

string FindIndexCodesOfAppKey(Unit_query_t query)
{
std::stringstream ss;
ss << "https://" << query.artemisIp << ":" << query.artemisPort
<< "/artemis/api/resource/v1/camera/advance/cameraList";
string str = ss.str();
map<string, string> headers;
//(必填的Http头)根据期望的Response内容类型设置
headers.insert(std::make_pair(HttpHeader::HTTP_HEADER_ACCEPT, "application/json"));
headers.insert(std::make_pair(HttpHeader::HTTP_HEADER_CONTENT_TYPE, "application/json;charset=UTF-8"));
list<string> signHeaderPrefixList;
signHeaderPrefixList.push_back("");
char strBody[1024] = { 0 };
sprintf_s(strBody, 1024, "{\"pageNo\":%d,\"pageSize\":%d}", 1, 100);
return HttpPost(ss.str(), headers, strBody, query.appKey, query.appSecret, 5, signHeaderPrefixList);
}

C++代码

进入C++代码后就看不见query这个变量的值了
stherix 2019-05-21
  • 打赏
  • 举报
回复
引用 6 楼 OrdinaryCoder 的回复:
[quote=引用 5 楼 stherix 的回复:] [quote=引用 4 楼 OrdinaryCoder 的回复:] 在监视窗口提示标识符“变量名”超出范围
无论是普通变量还是结构体都是可以看到的 你是在c#项目中引用cli的dll 调试看不到值的吗[/quote] 是的[/quote] C#项目右键属性-->调试-->勾选 启用本地代码调试
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复
引用 5 楼 stherix 的回复:
[quote=引用 4 楼 OrdinaryCoder 的回复:]
在监视窗口提示标识符“变量名”超出范围


无论是普通变量还是结构体都是可以看到的

你是在c#项目中引用cli的dll
调试看不到值的吗[/quote]
是的
stherix 2019-05-21
  • 打赏
  • 举报
回复
引用 4 楼 OrdinaryCoder 的回复:
在监视窗口提示标识符“变量名”超出范围
无论是普通变量还是结构体都是可以看到的 你是在c#项目中引用cli的dll 调试看不到值的吗
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复
在监视窗口提示标识符“变量名”超出范围
OrdinaryCoder 2019-05-21
  • 打赏
  • 举报
回复
引用 2 楼 stherix 的回复:
可以看到值啊
可能是bug吧
在局部变量窗口中可以看到这个变量吗

从托管函数中调用非托管函数参数传入了一个非托管结构体,断点在托管函数里的时候可以看见结构体的值,一到非托管函数中 这个非托管结构体就看不见值了 其他局部变量还是能看见
stherix 2019-05-21
  • 打赏
  • 举报
回复
可以看到值啊 可能是bug吧 在局部变量窗口中可以看到这个变量吗

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧