VS调试F11进不到dll源码
来源:互联网 发布:漫步者da500调音软件 编辑:程序博客网 时间:2024/06/07 23:55
最近研究Amazon的aws-sdk-cpp,是开源的代码,至少要用VS2013进行编译,因为代码中用到了C++11的新语法。
用cmake生成了VS2017的工程,编译顺利的通过了。然后写了个简单的测试工程,能正确的编译和运行,可是调试时发现F11始终进不到dll的源码,而在dll源码里打上断点后,F5运行却能在dll源码断点处停下来。印象中之前也有遇到过,一直没有找出原因。今天花了一上午的时间来研究,终于发现了问题。
#if defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32) #ifdef _MSC_VER #pragma warning(disable : 4251) #endif // _MSC_VER #ifdef USE_IMPORT_EXPORT #ifdef AWS_CORE_EXPORTS #define AWS_CORE_API __declspec(dllexport) #else // AWS_CORE_EXPORTS #define AWS_CORE_API __declspec(dllimport) #endif // AWS_CORE_EXPORTS #else // USE_IMPORT_EXPORT #define AWS_CORE_API #endif // USE_IMPORT_EXPORT#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32) #define AWS_CORE_API#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32)以上是aws-sdk-cpp定义的导入导出宏定义,aws-sdk定义了USE_WINDOWS_DLL_SEMANTICS、WIN32、USE_IMPORT_EXPORT和AWS_CORE_EXPORTS,这样宏AWS_CORE_API就被定义为__declspec(dllexport),表示从dll中导出相关符号。
而我写的测试工程,只定义了WIN32,最终宏AWS_CORE_API定义为空,在把aws-sdk头文件include后,相关函数的定义“AWS_CORE_API void InitAPI(const SDKOptions& options);”就变成了“void InitAPI(const SDKOptions& options);”,没有__declspec(dllimport),这样也能编译通过并且正确运行,但是F11就是进不到dll源码里面。以前的认知是要导入函数,必须加__declspec(dllimport),但是今天才发现,原来不用__declspec(dllimport)定义函数,也能成功。
然后我就在测试工程里加上了USE_IMPORT_EXPORT,编译调试,再F11就能进入到dll源码了。
阅读全文
0 0
- VS调试F11进不到dll源码
- VS中F11
- vs中F10 F11
- vs调试DLL方法
- VS调试dll
- vs 2005 调试dll
- vs中调试dll
- vs调试 lib dll
- F5调试F11无法进入DLL动态库里面LIB静态库方法
- VS,QtCreator调试进Qt源码
- VS 调试 ffmpeg 源码
- vs c# 调试 C++ dll
- VS调试Dll小小经验
- VS调试python中的DLL
- VS~单步调试DLL
- 采用Reflector的VS.net插件断点调试无源码DLL
- 采用Reflector的VS.net插件断点调试无源码DLL
- 采用Reflector的VS.net插件断点调试无源码DLL
- web入门之Http协议
- Android Studio中LogCat Filter的设置
- QT5编程提示QObject::connect: No such slot QPushButton::renameButton()
- 结构体指针定义及使用
- 【代码积累】InsertionSort
- VS调试F11进不到dll源码
- SharedPreferences以及获取当前目录
- vscode使用总结
- Linux
- Python使用struct处理二进制
- 【代码积累】InsertionSort via list
- python库——h5py入门讲解
- 基于CentOS6.4环境编译Spark-2.1.0源码
- 【代码积累】IntegerObjectCompare