我在类的头文件中声明了一个NSString*数组.
PolygonShape.h
NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon", ...};
Run Code Online (Sandbox Code Playgroud)
现在我在PolyginShape.m中使用它如下:
- (NSString*) name {
return (POLYGON_NAMES [self.numberOfSides]);
}
Run Code Online (Sandbox Code Playgroud)
numberOfSides是一个iVar,它将指示存储多边形名称的索引
到目前为止很好......它正在编译而没有任何错误
然后我在我的文件中添加了PolygonShape.h来实现main方法(注意:这些没有任何类定义和调用函数C-Style而不是obj-c Style)
#import "PolygonShape.h"
Run Code Online (Sandbox Code Playgroud)
现在,当我编译时,我得到一个构建(链接)错误
ld: duplicate symbol _POLYGON_NAMES in /Users/../Projects/CS193P/1B/What_A_Tool/build/What_A_Tool.build/Debug/What_A_Tool.build/Objects-normal/i386/PolygonShape.o and /Users/../Projects/CS193P/1B/What_A_Tool/build/What_A_Tool.build/Debug/What_A_Tool.build/Objects-normal/i386/What_A_Tool.o
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
所以我通过堆栈溢出和其他论坛,大多数建议是使全局变量extern,所以我做...
extern NSString* POLYGON_NAMES[] = {@"Invalid Polygon", @"Monogon" .. };
Run Code Online (Sandbox Code Playgroud)
但是我现在仍然收到链接错误,并且现在也收到2个警告
warning: 'POLYGON_NAMES' initialized and declared 'extern'
Run Code Online (Sandbox Code Playgroud)
在我导入PolygonShape.h的两个地方
我在这里错过了什么?
谢谢.
我正在编译一个在ubuntu(linux)中使用opengl的示例程序.代码的简短片段如下:
#include <stdlib.h>
#include <GL/glut.h>
void createBox( GLfloat centroX, GLfloat centroY,
GLfloat corR, GLfloat corG, GLfloat corB )
{
/* Cor */
glColor3f( corR, corG, corB );
Run Code Online (Sandbox Code Playgroud)
我安装了所有的包在opengl(在ubuntu中)开发,即:
freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa
libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev
Run Code Online (Sandbox Code Playgroud)
我像这样编译示例:
gcc -lGL CG_ex04.c -o main
Run Code Online (Sandbox Code Playgroud)
我得到以下内容
/tmp/ccDWmJDZ.o: In function `createBox':
CG_ex04.c:(.text+0x31): undefined reference to `glColor3f'
Run Code Online (Sandbox Code Playgroud)
和沿同一行的其他错误.
有谁知道我做错了什么?
Thanx提前提供任何帮助.
我用我的备份程序用vc6.0编程.我包括了shlwapi.h,windows.h,我使用了PathStripPath函数和PathRemoveFileSpec函数.
当我遵守这条消息时就出来了.
BlackDlg.obj : error LNK2001: unresolved external symbol __imp__PathStripPathA@4
BlackDlg.obj : error LNK2001: unresolved external symbol __imp__PathRemoveFileSpecA@4
Run Code Online (Sandbox Code Playgroud)
我删除了我的代码中的用法,这条消息没有来.谢谢你快进.
我正在尝试将Twitter集成到我的应用程序中,并不断收到以下错误.谢谢你的帮助.
"_OBJC_CLASS _ $ _ TWTweetComposeViewController",引用自:预览ViewController.o中的objc-class-ref ld:未找到架构armv7 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我在Build Settings中包含了设置为-ObjC的Other Linker Flags,因为我想使用一个需要它的框架(https://github.com/rs/SDWebImage)
但是在添加此标志后,我收到链接器错误:
Undefined symbols for architecture armv7:
Run Code Online (Sandbox Code Playgroud)
"_OBJC_CLASS _ $ _ SKProductsRequest",引自:
objc-class-ref in Parse(PFPurchase.o)
Run Code Online (Sandbox Code Playgroud)
"_OBJC_CLASS _ $ _ SKPayment",引自:
objc-class-ref in Parse(PFPurchase.o)
Run Code Online (Sandbox Code Playgroud)
"_OBJC_CLASS _ $ _ SKPaymentQueue",引自:
objc-class-ref in Parse(PFPurchase.o)
objc-class-ref in Parse(PFPaymentTransactionObserver.o)
Run Code Online (Sandbox Code Playgroud)
ld:找不到架构armv7的符号
clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
删除-ObjC链接器标志并再次构建项目而不会出现错误.任何关于事业的想法?谢谢.
好吧,自昨天以来,我一直在努力解决这个奇怪的错误,所以我想是时候向社区提问了......
我目前正在使用Objective-C++,我在头文件中有一个纯粹的C++类声明,如下所示:
#ifndef __MATRIX_H__
#define __MATRIX_H__
#define USE_NEON_UPSAMPLING2X true
#define USE_NEON_THRESHOLD true
typedef float OCRfloat;
template<class T = OCRfloat>
class Matrix {
public:
...
Matrix threshold(T thresholdValue) const;
...
Matrix upsample2x() const;
...
};
#ifdef TARGET_OS_IPHONE
#if USE_NEON_UPSAMPLING2X
template<> Matrix<float> Matrix<float>::upsample2x() const;
#endif
#if USE_NEON_THRESHOLD
template<> Matrix<float> Matrix<float>::threshold(float thresholdValue) const;
#endif
#endif
#include "Matrix.cpp"
#endif
Run Code Online (Sandbox Code Playgroud)
它是模板类,具有基本矩阵运算,但是,我希望通过T = float上的模板特化来优化一些瓶颈.我有包含的Matrix.cpp文件,如下所示:
#include <iostream>
#include <cmath>
#if defined TARGET_OS_IPHONE
#include <Accelerate/Accelerate.h>
#endif
...
template<class T> Matrix<T> Matrix<T>::threshold(T thresholdValue) const {
... // …Run Code Online (Sandbox Code Playgroud) 我已下载并编译:http://leenissen.dk/fann/wp/
用于编译的命令:
cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr .
Run Code Online (Sandbox Code Playgroud)
安装:
sudo make && sudo make install
Run Code Online (Sandbox Code Playgroud)
然后我转到fann项目中的examples /目录并尝试通过运行编译示例:
make all
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
gcc -O3 xor_train.c -o xor_train -lfann -lm
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `sin'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `exp'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `cos'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `log'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `pow'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `sqrt'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libfann.so: undefined reference to `floor'
collect2: error: ld returned 1 exit status
make: *** [xor_train] Error 1
Run Code Online (Sandbox Code Playgroud)
更新:
我得到了全局的上述消息链接器错误
const char* HOST_NAME = "127.0.0.1";
Run Code Online (Sandbox Code Playgroud)
我不认为我已经编译了两次文件,但这里是我对文件的定义.
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include "connection.hpp"
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <arpa/inet.h>
#include "connection.hpp"
Run Code Online (Sandbox Code Playgroud)
#ifndef __connection__
#define __connection__
#include <unistd.h>
#include <netinet/in.h>
const int BUFFSIZE = sysconf(_SC_PAGESIZE); //Define page size
const char* HOST_NAME = "127.0.0.1"; //Local host
//Definition of a class
#endif
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我正在开发一个以前完成并上传到app store的项目.当我在Xcode 5.0中运行这个应用程序时,它工作正常,但是当我在Xcode版本5.1.1(5B1008)上运行时,我在两个设备上都收到链接器错误和模拟器.
错误消息 - 找不到-llib的库.(clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)).
我已经搜索了很多,但我没有得到任何关于Library not found for -llib错误的线索.有什么我必须在构建设置中更改来解决这个问题吗?
我正在尝试使用QAndroidJniObject。作为测试,我只调用2个Java函数,一个返回一个int,另一个返回一个字符串。
返回int时,此代码可正常编译:
jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其更改为调用返回字符串的函数,它将失败:
jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");
Run Code Online (Sandbox Code Playgroud)
它失败了
错误:对'_jstring * QAndroidJniObject :: callStaticMethod <_jstring *>(char const *,char const *)'的未定义引用
既然QAndroidJniObject::callStaticMethod是模板函数,那么如何为一种类型定义它却为另一种类型定义它呢?
编辑:其实,我只是测试jobject,jbyteArray,jbooleanArray,jbyte,jboolean,等,这是我发现了什么-只有整数类型,如jshort,jint,jlong,jboolean工作,同时字符串,数组和对象都给出一个undefined reference错误。