Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用向量和查找时C++中未解决的外部问题_C++_Find_Stdvector_Unresolved External - Fatal编程技术网

在使用向量和查找时C++中未解决的外部问题

在使用向量和查找时C++中未解决的外部问题,c++,find,stdvector,unresolved-external,C++,Find,Stdvector,Unresolved External,我在一个完全独立的项目中尝试了这段代码,它工作得很好,唯一的区别是不工作的项目被导出为DLL。代码如下: RTATMATHLIB.CPP 错误 就这样。我不知道为什么它在另一个项目中有效,而不是在这个项目中…我发现另一个论坛帖子,其中似乎有人报告了与您相同的问题。请检查一下是否有 _DEBUG 在C/C++预处理器下的项目设置中定义,或在代码或包含文件中的某处定义 看起来好像std::vector认为您正在构建调试构建,而实际上您正在创建发布构建 我希望这有帮助。问题是我在C/C++->预处理

我在一个完全独立的项目中尝试了这段代码,它工作得很好,唯一的区别是不工作的项目被导出为DLL。代码如下:

RTATMATHLIB.CPP

错误


就这样。我不知道为什么它在另一个项目中有效,而不是在这个项目中…

我发现另一个论坛帖子,其中似乎有人报告了与您相同的问题。请检查一下是否有

_DEBUG
在C/C++预处理器下的项目设置中定义,或在代码或包含文件中的某处定义

看起来好像std::vector认为您正在构建调试构建,而实际上您正在创建发布构建


我希望这有帮助。

问题是我在C/C++->预处理器中定义了调试。将其更改为NDEBUG解决了问题。

在我的例子中,问题是将运行库设置为多线程DLL的调试配置。修复方法是将其更改为多线程调试DLL。错误消失了。删除_DEBUG宏也是一种解决方法,我想这不是一个好主意,因为您最终将调试生成链接到非调试标准库。

为我提供了:
在我的例子中,问题是运行库设置为多线程DLL的调试配置。修复方法是将其更改为多线程调试DLL

我猜这是一个调试运行时问题。你的项目设置是什么?有什么警告吗?@巴特:我对C++相当陌生,所以我不确定你的意思是什么?我为我的无知提前道歉。但是没有警告。确保在顶部的小下拉列表中显示Release not Debug。此外,如果你只是在制作C++程序,那么当你创建一个新项目时,确保你选择了在选项中表示空项目的冒泡,我看到了你的头列表中的STDAFX.H,这通常是在Windows应用程序中使用的。这就解决了我的问题。我得到:错误LNK2001:未解析的外部符号\uuuuu imp\uuuuuu CrtDbgReportW。这与我在Direct3D11应用程序中从32位切换到64位有关。在Visual Studio 2013社区中,可以在项目属性->配置属性->C/C++->代码生成->运行时库下找到此设置。我也是,我用msvc2015和needed/MD编译breakpad,它在发布时工作,但调试时需要/MDd非常感谢您,这么多的问题,试图让这个工作难以置信。。。
__declspec(dllexport) double someFunc(double** Y, int length);
Error   1   error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: __thiscall std::_Vector_const_iterator<double,class std::allocator<double> >::_Vector_const_iterator<double,class std::allocator<double> >(double *,class std::_Container_base_secure const *)" (??0?$_Vector_const_iterator@NV?$allocator@N@std@@@std@@QAE@PANPBV_Container_base_secure@1@@Z)  RTATMATHLIB.obj RTATMATHLIB
Error   2   fatal error LNK1120: 1 unresolved externals
_DEBUG