VS2019运行环境为Windows,GCC一般运行环境为linux。MingW是个两面派,既不同于VS2019,也不同于GCC。
下面用例子证明这一点。
在此之前一些相关背景可以参考:
vs2019c++动态库的一些问题
迦非喵:vs2019c++动态库的一些问题zhuanlan.zhihu.comCMake+Win10+Vs2019动态库的问题
迦非喵:CMake+Win10+Vs2019动态库的问题zhuanlan.zhihu.com具体修改Hello.cpp 为:
![c61e2281c17e6db712b7e55c6e64e552.png](https://i-blog.csdnimg.cn/blog_migrate/1301d2b263198e45f29301b421d95979.jpeg)
main.cpp为:
![8f046fc176f32ffe0c27778243741297.png](https://i-blog.csdnimg.cn/blog_migrate/6ec138fec3afdf59a3b5c953977ae369.jpeg)
在win10+vs2019编译运行有:
![acc30daa1881b2757a6a5ec2dd581719.png](https://i-blog.csdnimg.cn/blog_migrate/d1aa9e6e40711c19286b466b275227b2.png)
说明vs2019动态库定义了_Win32和Hello_EXPORTS,主程序定义了_Win32但没定义Hello_EXPORTS
在ubuntu20.04和gcc9.3下有:
![02f75abc302b8f2870d06cdef5726b5d.png](https://i-blog.csdnimg.cn/blog_migrate/de089f07d9c9df0a783997f99de3e8c2.png)
说明gcc动态库没定义_Win32和但是定义了Hello_EXPORTS,主程序没定义_Win32但也没定义Hello_EXPORTS
在MingW+gcc8.1下有:
![2f063236149c591d0e8208982ec8d959.png](https://i-blog.csdnimg.cn/blog_migrate/0cfe777f620d7eb7c4f0f7db7ed0d20e.png)
说明mingw动态库定义了_Win32和Hello_EXPORTS,主程序定义了_Win32但没定义Hello_EXPORTS
这一点mingw的表现和vs2019是一致的,也就是在编译时虽然用的gcc编译器,但是一些环境变量还是windows的。
感兴趣者可以举一反三,进行更多的尝试。