Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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/6/entity-framework/4.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++ - Fatal编程技术网

C++ 解析外部符号时出错

C++ 解析外部符号时出错,c++,C++,我试图在VisualStudio 2015 中创建一个简单的C++项目 Peakdetector.h #ifndef PEAKDETECTOR_H #define PEAKDETECTOR_H //------------------------------------------------------- #ifdef DLL_BUILD_SETUP #ifdef Q_OS_LINUX #define DLLSPEC __attribute__((visibil

我试图在VisualStudio 2015

中创建一个简单的C++项目 Peakdetector.h

 #ifndef PEAKDETECTOR_H
 #define PEAKDETECTOR_H
 //-------------------------------------------------------
 #ifdef DLL_BUILD_SETUP
    #ifdef Q_OS_LINUX
        #define DLLSPEC __attribute__((visibility("default")))
  #else
      #define DLLSPEC __declspec(dllexport)
  #endif
 #else
   #ifdef Q_OS_LINUX
      #define DLLSPEC
  #else
      #define DLLSPEC __declspec(dllimport)
   #endif
 #endif
  namespace vpg {
   #ifndef VPG_BUILD_FROM_SOURCE
   class DLLSPEC PeakDetector
  #else
   class PeakDetector
  #endif
       private:
          int __seek(int d) const;
          double __getDuration(int start, int stop);
   }

   inline int PeakDetector::__seek(int d) const
   {
     return ((m_intervalslength + (d % m_intervalslength)) % m_intervalslength);
   }

#endif
PeakDetector.cpp

#include "stdafx.h"
#include "peakdetector.h"

   namespace vpg {
     void PeakDetector::__updateInterval(double _duration)
     {
         //other stuff

     }
}
当我试图运行这个应用程序时,我得到一个错误

LNK2019未解析的外部符号“\uuuu declspec(dllimport)private:int\uuu cdecl vpg::PeakDetector::\uuuu seek(int)const”(\uuu imp_o__seek@PeakDetector@vpg@@AEBAHH@Z)在函数“private:void u cdecl vpg::PeakDetector::uu updateInterval(double)”中引用(__updateInterval@PeakDetector@vpg@@AEAAXN@Z)MyCustomProject


我是新手,无法理解为什么会出现此错误。我刚刚从一个示例中复制粘贴了此代码。如果缺少任何代码,请告诉我。另外,我没有任何.lib文件。

您必须在Visual Studio中添加
DLL\u BUILD\u设置
定义

为了做到这一点,你必须去

Project Settings -> C/C++ -> Preprocessor -> Preprocessor definitions
并将定义添加到列表中

编译导出符号的库(在本例中为类)时,必须使用规范
\uuu declspec(dllexport)
,在使用该库的项目中必须使用规范
\uu declspec(dllimport)


我从您提供的源代码中看到,有一个附加的定义
VPG\u BUILD\u from\u source
,它禁用导出,以便使用静态/内联链接,您可以尝试添加该定义。

您必须在Visual Studio中添加
DLL\u BUILD\u设置
定义

为了做到这一点,你必须去

Project Settings -> C/C++ -> Preprocessor -> Preprocessor definitions
并将定义添加到列表中

编译导出符号的库(在本例中为类)时,必须使用规范
\uuu declspec(dllexport)
,在使用该库的项目中必须使用规范
\uu declspec(dllimport)


我从您提供的源代码中看到,有一个附加的定义
VPG\u BUILD\u from\u source
,它禁用了导出,以便使用静态/内联链接,您可以尝试添加该定义。

C++区分大小写。@NeilButterworth非常感谢您。就像我说的,我对这个很陌生。我应该在这里换什么?是不是
类peakDetector{
?@Rohit类名“类peakDetector”此外,像C++ C++这样的名字是保留在C++实现中的。你不应该在你自己的代码中创建这些名字。这意味着他们也错了。不要跟着他们的例子。更多的阅读:C++是区分大小写的。@ NeilButterworth非常感谢。就像我说的,我对这个很陌生。我应该在这里做什么?是不是代码?探测器{??@Rohit类名“类峰值探测器”此外,像C++一样,名称> >查找> /CODE是为C++实现的,不应该在自己的代码中创建这些名称。这意味着它们也错了。不要跟随他们的例子。更多的阅读:我没有发现帖子里有任何错误,但是考虑到我在评论中读到的:是不是有人更新了原来的问题。删除了打字错误?@JuanRamirez如果你查看编辑行,你可以看到帖子的历史记录。原始帖子是camelCase,但更新为PascalCase。谢谢@Thebluefish,我之前的评论是针对一位用户的,他说我遗漏了一个打字错误,而这个错误在当时已经修复:)我在帖子中没有发现任何打字错误,但是考虑到我在评论:可能是有人更新了原始问题并删除了打字错误吗?@JuanRamirez如果你查看编辑行,你可以看到帖子的历史记录。原始帖子是camelCase,但被更新为PascalCase。谢谢@Thebluefish,我之前的评论是针对一位用户的,他说我遗漏了一个打字错误,而这在当时已经修复:)