好吧,所以我刚刚完成了我的最后一次编译错误(所以我想)并且出现了这些错误:
1>GameEngine.obj : error LNK2001: unresolved external symbol "public: static double WeaponsDB::PI" (?PI@WeaponsDB@@2NA)
1>Component.obj : error LNK2001: unresolved external symbol "public: static double WeaponsDB::PI" (?PI@WeaponsDB@@2NA)
1>Coordinate.obj : error LNK2019: unresolved external symbol "public: static double WeaponsDB::PI" (?PI@WeaponsDB@@2NA) referenced in function "public: double __thiscall Coordinate::distanceFrom(class Coordinate *)" (?distanceFrom@Coordinate@@QAENPAV1@@Z)
1>Driver.obj : error LNK2001: unresolved external symbol "public: static double WeaponsDB::PI" (?PI@WeaponsDB@@2NA)
1>Environment.obj : error LNK2001: unresolved external symbol "public: static double WeaponsDB::PI" (?PI@WeaponsDB@@2NA)
1>Environment.obj : error LNK2001: unresolved external symbol "public: static …Run Code Online (Sandbox Code Playgroud) 使用g ++并具有链接器错误.我有一个简单的程序分为两个模块:main.cpp和Dice.h Dice.cpp.
main.cpp中:
#include <iostream>
#include "Dice.h"
int main(int argc, char **argv) {
int dieRoll = Dice::roll(6);
std::cout<<dieRoll<<std::endl;
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Dice.h:
#ifndef DieH
#define DieH
namespace Dice
{
int roll(unsigned int dieSize);
}
#endif
Run Code Online (Sandbox Code Playgroud)
Dice.cpp:
#include <ctime>
#include <cstdlib>
#include "Dice.h"
namespace Dice
{
int roll(unsigned int dieSize)
{
if (dieSize == 0)
{
return 0;
}
srand((unsigned)time(0));
int random_int = 0;
random_int = rand()%dieSize+1;
return random_int;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用g ++编译和链接这些文件,如下所示:
g++ -o program main.cpp Dice.cpp
Run Code Online (Sandbox Code Playgroud)
我收到以下链接器错误: …
我试图找出如何使用CUDA内核作为库的一部分,以便我可以将库添加到我现有的C++源文件,并能够使用cuda内核.
那么你怎么做呢?我尝试创建一个包装器,如下所示:
.h文件:
#ifndef __reductions2d_H_
#define __reductions2d_H_
#include <stdio.h>
#include <cuda.h>
#include <cuda_runtime.h>
extern "C" void getMean_wrapper();
#endif
Run Code Online (Sandbox Code Playgroud)
.CU
__global__ void getMean(float *devDataPtr, size_t pitch, int rows, int cols)
{
for (int r = 0; r < height; ++r)
{
float* row = (float*)((char*)devPtr + r * pitch);
for (int c = 0; c < width; ++c)
{
printf("Row[%i][%i]: %4.3f \n",r,c row[c]);
}
}
}
void getMean_wrapper()
{
// Host code
int width = 3, height = 3;
int N …Run Code Online (Sandbox Code Playgroud) 我有一个名为Student.h的文件,它以这种方式具有静态整数:
class Student
{
public:
static int _avrA,_avrB,_avrC,_avrD;
};
Run Code Online (Sandbox Code Playgroud)
我有继承Student.h的university.h.关于University.cpp的实现,其中一个函数返回:
return (_grade_average*(Student::_avrA/Student::_avrB))+7;
Run Code Online (Sandbox Code Playgroud)
并编译器写道:
对Student :: _ avrA的未定义引用.
你知道为什么会这样吗?
在我完成构建之前,我的项目没有错误.这是错误日志.
Ld "/Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Products/Debug-iphonesimulator/WC Class Codes.app/WC Class Codes" normal i386
cd "/Users/stephanieasan/Desktop/SDK Projects/WC Class Codes"
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Products/Debug-iphonesimulator -F/Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Products/Debug-iphonesimulator -filelist "/Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Intermediates/WC Class Codes.build/Debug-iphonesimulator/WC Class Codes.build/Objects-normal/i386/WC Class Codes.LinkFileList" -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=40000 -framework iAd -lsqlite3.0 -framework UIKit -framework Foundation -framework CoreGraphics -o "/Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Products/Debug-iphonesimulator/WC Class Codes.app/WC Class Codes"
Run Code Online (Sandbox Code Playgroud)
.
ld: duplicate symbol _OBJC_IVAR_$_ListTableViewController.DBPath in /Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Intermediates/WC Class Codes.build/Debug-iphonesimulator/WC Class Codes.build/Objects-normal/i386/Code.o and /Users/stephanieasan/Library/Developer/Xcode/DerivedData/WC_Class_Codes-fgxjeudpfimhnebtmvmxtzlirxnz/Build/Intermediates/WC Class Codes.build/Debug-iphonesimulator/WC Class Codes.build/Objects-normal/i386/ListTableViewController.o for architecture i386
Command …Run Code Online (Sandbox Code Playgroud) 我有一个项目,当我构建这个其他项目时,它具有日志项目的依赖项,我得到以下链接器错误:
日志项目很好地构建,但是当我使用此项目中的日志项目作为链接器选项中的库时,它会生成以下错误,在我的日志记录项目中,我确实有一个logger.cpp,其中定义了wxRegKey.
../logging/dist/Debug/MinGW_1-Windows/liblogging.a(Logger.o): In function `ZN7Logging6Logger17CreateRegistryKeyEv':
c:\logging/impl/Logger.cpp:125: undefined reference to `_imp___ZN8wxRegKeyC1ENS_6StdKeyERK8wxString'
c:\logging/impl/Logger.cpp:127: undefined reference to `_imp___ZN8wxRegKeyC1ENS_6StdKeyERK8wxString'
c:\logging/impl/Logger.cpp:129: undefined reference to `_imp___ZNK8wxRegKey6ExistsEv'
c:\logging/impl/Logger.cpp:135: undefined reference to `_imp___ZN8wxRegKeyD1Ev'
c:\logging/impl/Logger.cpp:140: undefined reference to `_imp___ZN8wxRegKeyC1ENS_6StdKeyERK8wxString'
c:\logging/impl/Logger.cpp:142: undefined reference to `_imp___ZNK8wxRegKey6ExistsEv'
c:\logging/impl/Logger.cpp:143: undefined reference to `_imp___ZN8wxRegKey6CreateEb'
c:\logging/impl/Logger.cpp:149: undefined reference to `_imp___ZNK8wxRegKey6ExistsEv'
c:\logging/impl/Logger.cpp:152: undefined reference to `_imp___ZN8wxRegKeyD1Ev'
c:\logging/impl/Logger.cpp:155: undefined reference to `_imp___ZN8wxRegKeyC1ENS_6StdKeyERK8wxString'
c:\logging/impl/Logger.cpp:156: undefined reference to `_imp___ZNK8wxRegKey6ExistsEv'
c:\logging/impl/Logger.cpp:157: undefined reference to `_imp___ZN8wxRegKey6CreateEb'
../logging/dist/Debug/MinGW_1-Windows/liblogging.a(Logger.o): In function
`ZN7Logging6Logger13GetLoggStatusEv':
c:\logging/impl/Logger.cpp:169: undefined reference to
`_imp___ZNK8wxRegKey8HasValueEPKc'
c:\logging/impl/Logger.cpp:170: undefined reference to
`_imp___ZNK8wxRegKey10QueryValueEPKcPl' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Microsoft CppUnitTestFramework.我在一个解决方案中有两个独立的项目,一个是实际代码,另一个是单元测试代码.现在我想测试第一个项目中定义的"DijkstarImpl"类,并在项目Properties-> C++ - > General-> AdditionalInclude目录中添加了此类的路径.测试项目编译成功,但是当我运行测试时,我收到此错误:
错误2错误LNK2001:未解析的外部符号"public:static class DijkstarImpl*UnitTest_FasTrack :: UnitTest1 :: dijkstarImpl"(?dijkstarImpl @ UnitTest1 @ UnitTest_FasTrack @@ 2PAVDijkstarImpl @@ A)C:\ working\TestFastTrack\UnitTest_FasTrack\unittest1.obj
错误3错误LNK2001:未解析的外部符号"public:__thiscall DijkstarImpl :: DijkstarImpl(void)"(?? 0DijkstarImpl @@ QAE @ XZ)C:\ working\TestFastTrack\UnitTest_FasTrack\unittest1.obj
错误是链接器错误,但我不知道应该链接什么?它不是要包含在Properties-> Linker-> Input中的lib文件.以下代码段显示了单元测试代码.
#include "stdafx.h"
#include "CppUnitTest.h"
#include "DijkstarImpl.h"
#include "string.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest_FasTrack
{
TEST_CLASS(UnitTest1)
{
static DijkstarImpl* dijkstarImpl;
public:
TEST_CLASS_INITIALIZE(Initialize)
{
static DijkstarImpl* UnitTest_FasTrack::UnitTest1::dijkstarImpl;
}
TEST_METHOD(TestMethod1)
{
}
};
}
Run Code Online (Sandbox Code Playgroud) 我添加到我的pod文件中
pod 'google-plus-ios-sdk', '1.4.1'
Run Code Online (Sandbox Code Playgroud)
我做了一个
pod update
Run Code Online (Sandbox Code Playgroud)
我进口了
#import <GooglePlus/GooglePlus.h>
Run Code Online (Sandbox Code Playgroud)
但如果我尝试
[GPPSignIn sharedInstance].clientID = kClientID;
Run Code Online (Sandbox Code Playgroud)
我从链接器收到此错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_GPPSignIn", referenced from:
objc-class-ref in SDSocialManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud) 考虑以下代码.
class aClass
{
public:
static const int HALLO = -3;
};
int main()
{
std::vector<double > a;
std::vector<int> b;
std::vector<int> c;
int d = aClass::HALLO; //fine
a.resize(10,aClass::HALLO); //fine
b.resize(10,aClass::HALLO); // linker error c++11 and c++14
c.resize(10,(int)(double)aClass::HALLO); //fine
std::cout<<a[0]<<endl;
std::cout<<b[0]<<endl;
std::cout<<c[0]<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译与C++ 03一起使用并产生输出:
-3
-3
-3
Run Code Online (Sandbox Code Playgroud)
但是,使用C++ 11或C++ 14进行编译会导致链接器错误:
/tmp/cc3BARzY.o: In Funktion `main':
main.cpp:(.text+0x66): Nicht definierter Verweis auf `aClass::HALLO'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这只发生在矢量上b.如果有一个强制转换为double(a)或甚至是double并返回到int(c),则代码按预期运行.
如何解释这种行为?
linker-errors ×10
c++ ×6
g++ ×3
ios ×3
cocoapods ×2
cuda ×1
google-plus ×1
linker ×1
lnk2019 ×1
mach-o ×1
netbeans-7.1 ×1
objective-c ×1
static ×1
swift ×1
visual-c++ ×1
xcode ×1
xcode9.2 ×1