这是我的文件夹结构:
/
|
-- program.cpp
-- utility.h
-- utility.cpp
|
-- module/
|
-- utility.h
-- utility.cpp
// Note that I have two files named utility.h and two named utility.cpp
Run Code Online (Sandbox Code Playgroud)
在构建项目时,我收到一个链接错误(LNK2028:未解析的令牌等等......),说明某些符号未定义.我已经确认所有符号都已定义,并且所有声明的函数都有相应的定义.
我有一种感觉,在编译我的项目时,utility.cpp两个文件夹中的文件都会utility.obj在输出文件夹中编译成相同的文件.结果,一个人覆盖另一个人.
c++ linker-errors visual-studio-2008 visual-c++-2008 visual-c++
我有一个链接错误,其中链接器抱怨我的具体类的析构函数正在调用其抽象的超类析构函数,其代码缺失.
这是在XCode的Mac OS X上使用GCC 4.2.
我看到了g ++未定义的对typeinfo的引用,但它并不完全相同.
这是链接器错误消息:
Undefined symbols:
"ConnectionPool::~ConnectionPool()", referenced from:
AlwaysConnectedConnectionZPool::~AlwaysConnectedConnectionZPool()in RKConnector.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
这是抽象基类声明:
class ConnectionPool {
public:
static ConnectionPool* newPool(std::string h, short p, std::string u, std::string pw, std::string b);
virtual ~ConnectionPool() =0;
virtual int keepAlive() =0;
virtual int disconnect() =0;
virtual sql::Connection * getConnection(char *compression_scheme = NULL) =0;
virtual void releaseConnection(sql::Connection * theConnection) =0;
};
Run Code Online (Sandbox Code Playgroud)
这是具体的类声明:
class AlwaysConnectedConnectionZPool: public ConnectionPool {
protected:
<snip data members> …Run Code Online (Sandbox Code Playgroud) 我一直在使用agvtool我的iPhone应用程序的一般原则,并且最近找到了我想能够检查版本变量的原因(以便我可以将帮助内容重新复制到Documents目录中,如果它已经出来日期).MyAppVersionNumber在MyApp_vers.c中定义的变量在构建期间自动生成.它是在.o文件中生成的,并显示在链接应用程序本身的(以前的版本?)中.到目前为止,这似乎很好.
所以现在我已经extern double MyAppVersionNumber在.m文件中声明了我需要使用它(后来尝试使用它,只是在一个NSLog语句中开始),我尝试为iPhone模拟器构建,并得到一个链接错误:
"_MyAppVersionNumber", referenced from:
_MyAppVersionNumber$non_lazy_ptr in HelpViewController.o
(maybe you meant: _MyAppVersionNumber$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
那么,我需要做些什么来让这个链接?
我用google搜索了$ non_lazy_ptr和agvtool,并且什么也没有得到,只有$ non_lazy_ptr,它提供了一些东西,但主要是应用于库,这不是,真的(是吗?).到目前为止,在我的挖掘中,我还没有出现一个关于agvtool的页面,它实际上讨论了使用变量的任何细节 - 我读过的那些只是随便说出来的一个extern变量,我已经完成了.
有人熟悉这个,和/或能否提供任何帮助?
谢谢!
我正在使用下面的代码,我在网络的某个地方找到了,当我尝试构建它时,我收到了一个错误.编译还可以.
这是错误:
/tmp/ccCnp11F.o: In function `main':
crypt.c:(.text+0xf1): undefined reference to `crypt'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
这是代码:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <crypt.h>
int main()
{
unsigned long seed[2];
char salt[] = "$1$........";
const char *const seedchars =
"./0123456789ABCDEFGHIJKLMNOPQRST"
"UVWXYZabcdefghijklmnopqrstuvwxyz";
char *password;
int i;
/* Generate a (not very) random seed.
You should do it better than this... */
seed[0] = time(NULL);
seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);
/* Turn it into printable characters …Run Code Online (Sandbox Code Playgroud) struct A
{
virtual void foo(); // unused and unimplemented
virtual void bar () {}
};
int main ()
{
A obj; // ok
obj.bar(); // <-- added this edition
A* pm = (A*)malloc(sizeof(A)); // ok
A* pn = new A; // linker error
}
Run Code Online (Sandbox Code Playgroud)
对于堆栈上的对象,它工作正常.但是对于堆上的分配new(不malloc),它会给出链接器错误:
undefined reference to `vtable for A'
Run Code Online (Sandbox Code Playgroud) 我遇到的问题在这里得到了解决: 在open-mpi/mpi-run中加载共享库
当我的安装本身指定必要的-L参数时,我不知道如何设置LD_LIBRARY_PATH或指定-x LD_LIBRARY_PATH修复问题.我的安装在~/mpi/
我还包括了我的编译链接配置.
$ mpic++ -showme:version
mpic++: Open MPI 1.6.3 (Language: C++)
$ mpic++ -showme
g++ -I/home/vigneshwaren/mpi/include -pthread -L/home/vigneshwaren/mpi/lib
-lmpi_cxx -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil -lm -ldl
$ mpic++ -showme:libdirs
/home/vigneshwaren/mpi/lib
$ mpic++ -showme:libs
mpi_cxx mpi dl m rt nsl util m dl % Notice mpi_cxx here %
Run Code Online (Sandbox Code Playgroud)
当我编译mpic++ <file>并运行时,mpirun a.out我得到了一个(共享库)链接器错误
error while loading shared libraries: libmpi_cxx.so.1:
cannot open shared object file: No such file or directory …Run Code Online (Sandbox Code Playgroud) 我一直试图解决这个问题一段时间了.我试图为模拟器构建的原因是在视网膜4英寸显示屏上获取屏幕截图,这在appstore中是必需的.我正在制作一个团结的应用程序,我从论坛上看到人们成功地制作了模拟器.
在为iphone/ipad定期构建时,我没有任何错误,但打开我的项目(统一它被标记为模拟器)并尝试将其构建到模拟器失败,链接器错误(见下文).很明显"iphonesimulator (SDK not found)" message in Architecture -> Base SDK selection list.虽然在检查首选项 - >下载时,会安装所有模拟器.我能够手动启动模拟器
我是iphone/ipad开发的初学者,特别是在Xcode中,我在论坛上搜索这个问题并没有找到任何可以解决我的问题.任何人都能指出我正确的方向吗?我该怎么办?我应该在哪里注意错误?
谢谢!
ld: warning: directory not found for option '-L"/Users/mirko/Dropbox/Unity'
ld: warning: directory not found for option '-LProjects/Project3D'
ld: warning: directory not found for option '-LProject/Project3D/Builds/iOS/S3D"'
ld: warning: directory not found for option '-L"/Users/mirko/Dropbox/Unity'
ld: warning: directory not found for option '-LProjects/Project3D'
ld: warning: directory not found for option '-LProject/Project3D/Builds/iOS/S3D/Libraries"'
0 0x10a87b098 __assert_rtn + 144
1 0x10a87e431 mach_o::relocatable::Section<x86>::addRelocFixup(mach_o::relocatable::Parser<x86>&, macho_relocation_info<Pointer32<LittleEndian> > const*) + 1781 …Run Code Online (Sandbox Code Playgroud) 我想签署我的apk,所以我执行了以下命令:
java -jar signapk.jar platform.x509.pem platform.pk8 app-debug.apk~/Desktop/test.apk
但我收到以下错误:
线程"main"中的异常java.lang.UnsatisfiedLinkError:java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)的java.library.path中没有conscrypt_openjdk_jni,java.lang.Runtime.loadLibrary0(Runtime.java:870) atg.conscrypt.OpenCrypto的一个org.conscrypt.NativeCrypto的org.conscrypt.NativeCryptoJni.init(NativeCryptoJni.java:25)上的java.lang.System.loadLibrary(System.java:1122).(NativeCrypto.java:54)org.conscrypt.OpenSSLBIOInputStream在org.conscrypt.OpenSSLX509Certificate.fromX509PemInputStream(OpenSSLX509Certificate.java:119)在org.conscrypt.OpenSSLX509CertificateFactory $ 1.fromX509PemInputStream(OpenSSLX509CertificateFactory.java:220)在org.conscrypt.OpenSSLX509CertificateFactory $ 1.fromX509PemInputStream(OpenSSLX509CertificateFactory.(OpenSSLBIOInputStream.java:34) .java:216)at org.conscrypt.OpenSSLX509CertificateFactory $ Parser.generateItem(OpenSSLX509CertificateFactory.java:94)at org.conscrypt.OpenSSLX509CertificateFactory.engineGenerateCertificate(OpenSSLX509CertificateFactory.java:272)at java .security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)at com.android.signapk.SignApk.readPublicKey(SignApk.java:182)at com.android.signapk.SignApk.main(SignApk.java:1087)
如何解决这个错误?
(openjdk版本"1.8.0_141"OpenJDK运行时环境(版本1.8.0_141-8u141-b15-3~14.04-b15)OpenJDK 64位服务器VM(版本25.141-b15,混合模式))
我不确定我做错了什么.
我将项目文件夹移动到另一个文件夹,并将备份文件夹复制到桌面.
我试图打开备份项目并构建,我收到了链接器错误.
所以我决定删除备份文件夹并将项目文件夹移回桌面.我不能再编译并收到以下错误.
Showing Recent Issues clang: error: linker command failed with exit code 1 (use -v to see invocation)
duplicate symbol _main in:
/Users/BRO/Library/Developer/Xcode/DerivedData/SFITNESS-flzvwdymttxhducvwvmhpuaqfzhj/Build/Intermediates.noindex/SFITNESS.build/Debug-iphonesimulator/SFITNESS.build/Objects-normal/x86_64/main-90EC778DD760FD57.o
/Users/BRO/Library/Developer/Xcode/DerivedData/SFITNESS-flzvwdymttxhducvwvmhpuaqfzhj/Build/Intermediates.noindex/SFITNESS.build/Debug-iphonesimulator/SFITNESS.build/Objects-normal/x86_64/main-F627C2B37F247040.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
1.我打开Derived Data文件夹并删除其中的所有内容
2.我删除了所有模拟器中的所有项目
3.我重新启动了xCode,Clean和build
该链接
linker-errors ×10
xcode ×4
c++ ×3
ios ×3
objective-c ×2
agvtool ×1
android ×1
apk ×1
c ×1
crypt ×1
cryptography ×1
gcc ×1
iphone ×1
mpi ×1
non-lazy-ptr ×1
sign ×1
unzip ×1
visual-c++ ×1