C++ VS即时窗口”;“标识符未定义”;查询带有命名空间的DLL函数时
我尝试从VS2017即时窗口内部调用一些DLL导出函数。C++头中的函数看起来如下:C++ VS即时窗口”;“标识符未定义”;查询带有命名空间的DLL函数时,c++,visual-studio,immediate-window,C++,Visual Studio,Immediate Window,我尝试从VS2017即时窗口内部调用一些DLL导出函数。C++头中的函数看起来如下: namespace ma { bool MODEL_DECLSPEC ClearParameter(); bool MODEL_DECLSPEC GetResult(); : } 但是,当我在代码中的断点处停止并在即时窗口中键入时 ma::GetResult() 它回来了 identifier "ma" is undefined 我可以在“std”命名空间中调用函数,
namespace ma
{
bool MODEL_DECLSPEC ClearParameter();
bool MODEL_DECLSPEC GetResult();
:
}
但是,当我在代码中的断点处停止并在即时窗口中键入时
ma::GetResult()
它回来了
identifier "ma" is undefined
我可以在“std”命名空间中调用函数,但不能在我自己的命名空间中调用
编辑:我做了更多的测试,当断点位于DLL中的“ma”命名空间范围内时,立即窗口会很好地解释“ma”命名空间,并调用导出的DLL函数。这对调试来说是相当有限的,所以我肯定我遗漏了什么?发现它与名称空间无关。本机调试器不会查看其当前模块的外部:
这里讨论了一些变通方法胡乱猜测-这些符号是否在库中公开?如果没有,也许它们被完全移除了。@hauron,谢谢你的想法。是的,它们是出口的。(我在DLL上做了一个“垃圾箱/出口”,可以看到导出的函数。)这就是你的意思吗?不确定这是一个bug,他们没有在调试程序中建立一个C++编译器。通过使用“帮助”>“发送反馈”>“报告问题”,向了解情况并能够解决问题的人说明情况。谢谢。当你说他们没有把C++编译器建进调试器时,你是说Bug和编译器不像其他语言一样集成,比如C?这就解释了为什么intellisense和编译器经常不一致。