我正在尝试按照这些说明安装 Google Protocol Buffers。创建脚本后,我尝试使用以下命令运行它:
$ ./build-proto-ios.sh
Run Code Online (Sandbox Code Playgroud)
我收到以下输出:
mkdir: ios-build: File exists
Platform is iPhoneSimulator
./build-proto-ios.sh: line 40: ./configure: No such file or directory
make: error: unable to find utility "make", not a developer tool or in PATH
make: error: unable to find utility "make", not a developer tool or in PATH
cp: src/.libs/libprotobuf-lite.a: No such file or directory
Platform is iPhoneOS
./build-proto-ios.sh: line 40: ./configure: No such file or directory
make: error: unable to find utility "make", not …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习Objective-C中的反射.我已经找到了一些关于如何转储类的属性列表的重要信息,特别是在这里,但我想知道是否可以使用反射设置属性的值.
我有一个键(属性名称)和值(所有NSStrings)的字典.我想使用Reflection获取属性,然后将其值设置为我的字典中的值.这可能吗?还是我在做梦?
这与字典无关.我只是使用字典发送值.
像这个问题,但对于目标C.
- (void)populateProperty:(NSString *)value
{
Class clazz = [self class];
u_int count;
objc_property_t* properties = class_copyPropertyList(clazz, &count);
for (int i = 0; i < count ; i++)
{
const char* propertyName = property_getName(properties[i]);
NSString *prop = [NSString stringWithCString:propertyName encoding:NSUTF8StringEncoding]];
// Here I have found my prop
// How do I populate it with value passed in?
}
free(properties);
}
Run Code Online (Sandbox Code Playgroud) 自从升级到Xcode和iOS8以来,我一直无法构建胖静态库.这里和这里有一些非常好的说明,但我认为第一条指令的部分内容和所有第二条指令都已过时.第一条说明使用静态iOS框架,第二条说明说使用Cocoa Touch静态库.在Xcode6之前,我会使用静态iOS框架,但现在他们已经将它重命名为Cocoa Touch Framework,我不确定.
那么,对于初学者,我应该用哪个创建胖静态库?它是Cocoa Touch Framework吗?还是可可触摸静态库?


然后我创建一个新的聚合目标:

然后我创建一个运行脚本:

这是我正在使用的运行脚本(完整):
# This script is based on Jacob Van Order's answer on apple dev forums
https://devforums.apple.com/message/971277
# See also http://spin.atomicobject.com/2011/12/13/building-a-universal-framework-for-ios/ for the start
# To get this to work with a Xcode 6 Cocoa Touch Framework, create Framework
# Then create a new Aggregate Target. Throw this script into a Build Script Phrase …Run Code Online (Sandbox Code Playgroud) 我已经尝试了几天来创建一个Boost Global Logger以便在整个应用程序中使用,但我似乎无法在Global Logger中设置严重性级别.
重要:
请看下面安德烈的回答......它被标记为步骤(a)和(b)但我仍然没有做到正确!
就在这里的Boost文档中
...拥有一个或多个全局记录器以便在需要时在每个地方轻松访问它们会更方便.在这方面,std :: cout就是这种记录器的一个很好的例子.
该库提供了一种声明全局记录器的方法,可以像std :: cout一样访问它们.实际上,此功能可用于任何记录器,包括用户定义的记录器.声明了全局记录器后,可以确保从应用程序代码的任何位置对此记录器实例进行线程安全访问.该库还保证全局记录器实例即使跨模块边界也是唯一的.这允许甚至在可以编译到不同模块中的仅头部组件中采用日志记录.
无论您用于声明记录器的宏如何,都可以使用logger标记的静态get函数获取记录器实例:
src::severity_logger_mt< >& lg = my_logger::get();
Run Code Online (Sandbox Code Playgroud)
我从Boost Logger大师安德烈发现,我的问题是严重性类型不匹配.
您已使用默认模板参数实例化severity_logger_mt,因此严重性级别属性的类型为int.您的枚举值将转换为int并发送到日志记录核心.您尚未设置任何接收器,因此默认使用默认接收器.接收器尝试从日志记录中提取严重性级别属性值,但未能这样做,因为它期望严重性级别为boost :: log :: trivial :: severity_level类型.在失败之后,接收器回退到boost :: log :: trivial :: severity_level :: info严重性.
如果要将枚举用于严重性级别,则必须:
------------------------------------(现在,这是答案!!!!) - -------------------------------------
(a)在记录器模板参数中指定它
(b)使用知道你的枚举的格式化程序设置一个接收器.
但我无法弄清楚如何做到这一点,因为即使在尝试遵循他的指示之后,严重性级别看起来像接收器仍然会回落到boost :: log :: trivial :: severity_level :: info severity.任何人都可以帮我弄清楚如何在我的全局记录器中正确设置严重性?这是代码:
HEADER
#include <boost/log/trivial.hpp>
#include <boost/log/sources/global_logger_storage.hpp>
enum severity_level
{
normal,
warning,
error,
critical
};
BOOST_LOG_GLOBAL_LOGGER(logger, boost::log::sources::severity_logger_mt< severity_level >)
Run Code Online (Sandbox Code Playgroud)
CPP
#include "GlobalLogger.h"
#include <boost/log/expressions/formatters/date_time.hpp> …Run Code Online (Sandbox Code Playgroud) 我承认我有一个独特的情况。我们使用 Make 构建我们的应用程序。但是我的 IDE CLion 使用 CMake。所以我尝试将 GoogleTest 设置为在两者上运行(有点)。我可以两种方式编译我的代码(在命令行中使用 make 并从我的 IDE 中构建)。但是当我选择测试装置并单击运行按钮时,在 CLion 中,没有找到测试,这就是我收到的:
Running main() from gtest_main.cc
[==========] Running 0 tests from 0 test cases.
[==========] 0 tests from 0 test cases ran. (0 ms total)
[ PASSED ] 0 tests.
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)
这是我的测试夹具:
#include <gtest/gtest.h>
#include "OPProperties.h"
namespace {
// The fixture for testing class OPPropertiesTestTest.
class OPPropertiesTestTest : public ::testing::Test {
protected:
// You can remove any or all of the following …Run Code Online (Sandbox Code Playgroud) 所以,看起来有很多像我这样的问题,但不确定它们是否与我的问题有关.好.我有一个Android项目,它使用SDK作为引用库.SDK包含C++,所以我使用的是android-ndk-r9库.我在Android项目中引用的SDK是一个JNI库(Oooooo - 可怕的东西).哦是的,不要让我忘记提及armeabi-v7a(这似乎是另一个可怕的主题).执行此行时发生错误:
System.loadLibrary("tfp_jni");
Run Code Online (Sandbox Code Playgroud)
tfp_jni实际上是我的SDK库项目的libs文件夹中的armeabi-v7a文件夹下的libtfp_jni.so文件.该SDK库项目包含Android.mk文件.我认为代码不会进入那里.但这是.mk文件的内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tfp-prebuilt
LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libtfp_jni.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
然后在我的Android项目中,我有一个包含Android.mk和Application.mk的jni文件夹.以下是内容:
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_INSTALL_CAMERA:=off
include $(INNERID_ANDROID_ROOT)/Android.mk
include $(OPENCV_ANDROID_ROOT)/sdk/native/jni/OpenCV.mk
Run Code Online (Sandbox Code Playgroud)
Application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-14
Run Code Online (Sandbox Code Playgroud)
环境变量

路径和符号 - 包括

除源位置和输出位置(显示项目文件夹)外,所有其他选项卡均为空.
Android项目和偏好设置

我已经尝试了Stackoverflow上类似问题的各种其他答案但没有成功.如果您还需要查看其他内容,请告知我们,我会尽快提供其他信息.
新图片

更正!apk位于verify-demo-nolic项目/ bin文件夹中.Referenced Library tfp_java.jar是SDK库项目.您可以从Finder中看到.so文件位于库中.这有帮助吗?
我正在尝试学习向iPhone应用程序(资产目录)添加图标和启动画面的新方法.新的Images.xcassets一开始就把我绊倒,但后来我开始了解它.甚至,至少有两个不同的网站,将你的图标转换为iPhone和Android上的图标所需的所有不同尺寸: Icon Slayer和Makeappicon.com非常 酷!
但是在我使用所有这些优秀的工具"学习"并学习了很多东西时,我了解到Apple不鼓励创建启动画面,并且这些工具不会为您创建启动图像.所以我决定从Images.xcassets中删除我的LaunchImage集.
现在,当我清理和构建时,我收到以下错误:
/Users/pdl/Development/TestBackground/TestBackground/Images.xcassets:没有输入目录包含名为"LaunchImage"的匹配启动图像集.
所以,然后我从Images.xcassets中删除了我的AppIcon集,当我运行一个干净的构建时,我的AppIcon收到了同样的错误.我通过完全删除Images.xcassets并从头开始重新创建来解决了这个问题.
只是好奇是否有人知道这些配置存储在哪里?应该比删除和重新创建更容易修复.明白我的意思了吗?
我希望通过提供一些帮助来获得一些帮助.谢谢.
帮助:
它在设备上崩溃。它在模拟器中崩溃。但在 Instruments 工具中它不会崩溃。我承认,我仍在学习如何使用 Instruments 工具,并且可能没有设置正确的设置来捕获错误。但我已经为此工作了好几天,这让我发疯。我的所有代码似乎都执行得很好。我正在使用 NSNotificationCenter 进行回调。当执行返回到视图并且数据在我的代码中设置时,数据就在那里。 当视图即将显示新数据时会出现问题。 相反,视图会消失并且应用程序会由于 EXC_BAD_ACCESS 错误而崩溃。我完全被难住了。
我对 NSZombie 如何与 Instruments 工具配合使用感到困惑。一些说明表明您不能将 NSZombiesEnabled 与 Instruments 工具一起使用。我也无法成功查看日志。也许我试图查看错误的日志,因为我查看的日志似乎不是人类可读的格式。
我几乎 99.9% 确信问题是在我们开始(在 C++ 中)将 CVMat 位图转换为灰度进行处理、在 C++ 中处理图像,然后在 C++ 中转换回颜色进行显示时开始的。但即使在它周围放置一个 try/catch 块也没有捕获错误。Objective-C 中的回调接收 UIImage。
异步调用、多种语言、包装器、OpenCV 库、大量故障点。我相信,出于多种原因,我必须成为 Instruments 工具的专家,但现在我迫切需要获得任何建议。
我现在正在学习 Ray Wenderlich 教程,但很感谢可能遇到类似问题的其他人提供的信息。
我想弄清楚如何使用 CMake 对我的 C++ 项目运行 Google 测试。到目前为止,我已经创建了一个名为 Simple 的项目和一个名为 SimpleTest 的 Google Test 项目。
对于简单项目
这是我的 CMakeLists.txt 文件:
cmake_minimum_required(VERSION 2.8.4)
project(Simple)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES
main.cpp
NewCppClass.cpp
NewCppClass.h)
add_executable(Simple ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
这是我的 main.cpp 文件:
#include <iostream>
#include "NewCppClass.h"
using namespace std;
int main() {
NewCppClass newCppClass;
int i = newCppClass.getNumberToTest();
cout << "i = " << i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的类标题:
#ifndef SIMPLE_NEWCPPCLASS_H
#define SIMPLE_NEWCPPCLASS_H
class NewCppClass {
public:
int getNumberToTest();
};
#endif //SIMPLE_NEWCPPCLASS_H
Run Code Online (Sandbox Code Playgroud)
这是我的 .cpp 文件:
#include "NewCppClass.h"
int NewCppClass::getNumberToTest() …Run Code Online (Sandbox Code Playgroud) c++ ×5
objective-c ×4
cmake ×2
googletest ×2
android ×1
android-ndk ×1
boost ×1
clion ×1
command-line ×1
eclipse ×1
frameworks ×1
ios ×1
java ×1
linux ×1
logging ×1
makefile ×1
metadata ×1
opencv ×1
reflection ×1
uiimage ×1
xcasset ×1
xcode5 ×1
xcode6 ×1