|
|
1
7
这些选项可能会添加在运行时库头文件中使用的定义(例如__DLL和__DEBUG)。一个常见的做法是在动态链接时将__declspec(dllimport)添加到函数声明中。 编译器似乎也使用这些来帮助链接器链接到正确的库。这在 MSDN . |
|
|
2
8
C预处理器定义的一个副作用是
一些数据结构(如STL容器和迭代器)在调试运行时的大小可能不同,这可能是由于以下功能
如果混合和匹配针对不同运行时库编译的对象文件,您将收到以下链接器警告:
|
|
|
3
3
编译器需要知道您是生成单线程代码还是多线程代码。默认情况下,编译器生成线程安全代码(多线程)。如果你想要单线程代码,你必须告诉它。如果更改默认值,编译器将更改默认运行时库(您始终可以在链接器命令选项中覆盖此选项,只需确保您选择的库与目标文件具有相同的代码结构:单线程静态、多线程静态或多线程DLL)。请注意,没有单线程DLL选项(根据定义,运行时库DLL将被构建为线程安全的,因为它由多个应用程序共享)。 |
|
4
1
如果你忽略静态运行时,那么你会得到与Linux相同的选项。 我知道静态运行时很有用,但我从来没有真正需要过它。此外,它还会导致处理内存分配/释放的潜在问题,因此我发现只使用DLL运行时更容易。
发布/调试版本与Linux/Unix相同。
|
|
|
5
0
我认为这背后的原因是,SEH(结构化异常处理程序)代码的生成方式会因您链接到的运行时库而异。 |
|
|
6
0
为DLL和静态库生成了不同的机器代码。 在Linux上,你也必须这样做,如果你想构建一个共享库,编译器标志叫做-fPIC。否则,在AMD64和SPARC(也许还有其他)上,它会崩溃。在i386架构上,链接器足够聪明,不会共享内存中的库,因此不会崩溃。 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |
|
Jip Helsen · 在c中导入链接器地址 1 年前 |
|
Petr Skocik · 与定制的pcc链接 1 年前 |
|
|
KRISHNAKANT MALI · 预处理器和链接器功能中的歧义 1 年前 |
|
|
ihdv · 在c++编译中,提供链接库路径的linux命令是什么? 2 年前 |
|
|
Hans · 避免在C++中优化未使用的变量? 2 年前 |