TARGET_IPHONE_SIMULATOR宏在添加到项目中的C ++源代码中不起作用。尽管应该注意的是,如果我只是将宏替换为1或0,代码就会运行。

所以这是设置。我一直在从转换文件:
https://code.google.com/p/ld48jovoc/source/browse/util/tweakval/?r=13与我在XCode中制作的iOS应用程序一起使用。

除标题外,其他所有内容几乎相同。

#ifndef TWEAKVAL_H
#define TWEAKVAL_H

#ifdef __cplusplus
extern "C" {
#endif

#include <sys/types.h>

// Do only in debug builds on simulator, this does NOT work on iOS device
#if TARGET_IPHONE_SIMULATOR // replace with 1 or zero to make it work
#  define TV_USE_TWEAKVAL 1
#else
#  define TV_USE_TWEAKVAL 0
#endif


//
// See the thread referenced above for idea of how to implement
// this without the __COUNTER__ macro.

// If we are in a build modethat wants tweakval, and the compiler
// supports it, use it
#if TV_USE_TWEAKVAL
#  define _TV(Val) _TweakValue( __FILE__, __COUNTER__, Val )

//float _TweakValue( const char *file, size_t counter, float origVal );
int _TweakValue( const char *file, size_t counter, int origVal );

void ReloadChangedTweakableValues();

#else
// don't use it
#  define _TV(Val) Val
#  define ReloadChangedTweakableValues()

#endif

#ifdef __cplusplus
}  // extern "C"
#endif

#endif


除了整个内容都包装在#if TV_USE_TWEAKVAL中之外,cpp文件几乎相同。

现在,我可以通过代码或在构建设置中手动设置此宏,但我更希望通过检测预处理器命令使此功能自动启用/禁用。我的猜测是,当它链接tweakval源代码时未检测到宏,而且我不知道需要更改哪些构建设置来解决此问题。

谢谢。

最佳答案

TARGET_IPHONE_SIMULATOR来自TargetConditionals.h。您需要#include该文件。大概您的其他代码是通过其他路径(例如Cocoa/Cocoa.h)间接获取它的。

关于c++ - 在C++中使用TARGET_IPHONE_SIMULATOR时出现链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18495213/

10-11 14:54