请在某些背景下查看此问题:Linking unreferenced libraries breaks my program
我有以下程序:
#include <iostream>
int main( int argc, char* argv[] )
{
std::cout << "Hello world" << std::endl;
int *p;
p = new int(3);
std::cout << *p << std::endl;
delete p;
return 0;
}
在我链接到第三方库之前,它工作正常。当我在一个更大的程序中链接到我需要的Abaqus库时,上面的程序在尝试运行delete p;
时崩溃了。使用Dependency Walker,我发现对operator new
的调用与Abaqus提供的operator new
定义相关联。但是,对operator delete
的调用与标准定义相关联。
我已将new
/ delete
替换为::new
/ ::delete
并获得相同的结果。
有没有办法解决标准的新/删除操作符?或者,我可以强制Visual Studio链接到这些运算符的正确(标准)定义吗?
答案 0 :(得分:0)
指定链接器选项"/DEFAULTLIB:MSVCRT.LIB"
会导致程序成功执行。