小编use*_*293的帖子

我应该静态还是动态地链接到Visual Studio C运行时?

我已经阅读了双方关于是否应该在Visual Studio项目中静态或动态地链接到C运行时库的参数,并且我仍然不完全确定要考虑什么.

我的项目引入了一些第三方库(Python,HDF5,Trilinos和Microsoft MPI),每个库都必须使用与我的最终可执行文件相同的运行时库构建(否则它们不能链接在一起).静态链接时,每个库都将包含C运行时的副本.我读到这很容易引起问题,因为最终的可执行文件将包含运行时的多个副本,其中没有一个可以相互交互.但是,如果相同的符号被多重定义,链接器是否会抱怨?

我想避免"DLL Hell",但我担心在运行时的多个副本中静态链接可能会产生的阴险错误.我读错了吗?

此外,我正在使用Visual Studio 2005,我读到Service Pack 1运行时不向后兼容.这是否意味着没有SP1构建的应用程序将无法在具有SP1 dll的计算机上运行,​​即使它们具有相同的名称(例如msvcr80.dll)?

crt msvcrt

19
推荐指数
2
解决办法
1万
查看次数

链接到Visual Studio 2005中的Python导入库

我有一个嵌入了Python的C++应用程序.我正在使用Visual Studio 2005构建.当我尝试链接到python26.lib时,我得到了许多未解析的符号,所有符号都以"__imp"开头:

错误LNK2019:函数_main中引用的未解析的外部符号__imp__Py_Initialize

python26.lib是一个导入库(由Python 2.6安装程序安装).我该怎么做才能解决这些问题?它们确实存在于导入库中(dumpbin/all显示它们).谢谢.

python import linker visual-studio

8
推荐指数
1
解决办法
5219
查看次数

erf(x)和math.h

根据这个站点,错误函数erf(x)来自math.h. 但实际上看看math.h,它不存在,而gcc无法编译以下测试程序,而g ++可以:

#include <math.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
  double x;
  double erfX;
  x = 1.0;
  erfX = erf(x);

  printf("erf(%f) = %f", x, erfX);
}

$ gcc mathHTest.c
/tmp/ccWfNox5.o: In function `main':
mathHTest.c:(.text+0x28): undefined reference to `erf'
collect2: ld returned 1 exit status
$ g++ mathHTest.c
Run Code Online (Sandbox Code Playgroud)

g ++没有g ++带来什么?查看/ usr/include,我能找到的唯一的地方erf(x)是在tgmath.h中,我没有包括.所以g ++必须抓住比gcc更多的标题,但是哪些?

编辑:我没有在libm与gcc链接,因此链接错误.但是,我仍然不明白为什么erf()不在math.h中.它来自哪里?

math.h

5
推荐指数
2
解决办法
1万
查看次数

svn在文件中区分特定行

我想确定SVN版本文件中最后一次更改特定行的时间.SVN(或TortoiseSVN)有命令这样做吗?

我可以写一个脚本,它会从HEAD向后反转每个连续的版本,并检查给定行号的行是否不同.但是,如果在所需的行之前插入行,则这种简单的方法将不起作用,但行本身的文本没有改变.我不是合并理论/差异的专家,所以我不知道如何做到这一点.有任何想法吗?

svn diff

4
推荐指数
1
解决办法
1022
查看次数

标签 统计

crt ×1

diff ×1

import ×1

linker ×1

math.h ×1

msvcrt ×1

python ×1

svn ×1

visual-studio ×1