小编Ale*_*der的帖子

在 Rust 中将 i8 的向量转换为 u8 的向量?

有没有更好的方式来投Vec<i8>Vec<u8>鲁斯特除了这两个人?

  1. 通过映射和投射每个条目来创建副本
  2. 使用 std::transmute

根据文档,(1) 很慢,(2) 是“转化应该是绝对的最后手段” 。

可能有一点背景知识:我Vec<i8>从不安全的gl::GetShaderInfoLog()调用中得到了一个,并希望通过使用String::from_utf8().

string casting vector rust

19
推荐指数
2
解决办法
3316
查看次数

将'this'转换为std :: shared_ptr

我在类上有一个方法,使特定实例成为"活动"实例:

void makeActive() { activeInstance = this; }
Run Code Online (Sandbox Code Playgroud)

但是,因为activeInstance有类型,它不起作用std::shared_ptr< ClassName >.我怎样才能投thisstd::shared_ptr<ClassName>

c++ shared-ptr c++11

9
推荐指数
1
解决办法
1751
查看次数

emscripten webworker的最小工作示例

我正在尝试使用emscripten在C++中构建一个基本的webworker示例.API看起来很简单,但我无法让它工作.我实际上想在我的项目中实现这个功能,但是在失败后试图做一个最小的例子它也不起作用.

我有main.cpp:

#include <emscripten/emscripten.h>
#include <emscripten/bind.h>
#include <iostream>

namespace e = emscripten;

int counter = 0;

void cback(char* data, int size, void* arg) {
    std::cout << "Callback" << std::endl;
    counter++;
}

void loop() {
    std::cout << "Counter: " << counter << std::endl;
}

int main() {
    std::cout << "Main func." << std::endl;
    worker_handle worker = emscripten_create_worker("worker.js");
    emscripten_call_worker(worker, "one", 0, 0, cback, (void*)42);

    emscripten_set_main_loop(loop, 2, true);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和worker.cpp:

#include <iostream>
#include <emscripten/emscripten.h>

extern "C" {

void one(char* data, int …
Run Code Online (Sandbox Code Playgroud)

javascript c++ web-worker emscripten

9
推荐指数
1
解决办法
3390
查看次数

使用cmake构建时找不到android/log.h

我已经开始在Android Studio中使用Android NDK进行开发,但由于它没有适当的C++支持,所以它很痛苦.所以我尝试创建一个cmake项目来构建我的东西.我已经使用了android-cmake,到目前为止它运行良好,除了事实<android/log.h>,<android/native_window.h>并且可能<android/*>找不到所有包含物.IDE(CLion)也因为它而将它们标记为缺失.我错过了什么CMakeLists.txt吗?

这是CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.4)
project(App)

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

include(AndroidNdkGdb)
include(AndroidNdkModules)

android_ndk_gdb_enable()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/src/main/libs/armeabi-v7a)

set(LIBRARY_DEPS GLESv2 android log)

include_directories(${PROJECT_SOURCE_DIR}/src/main/lib/armeabi-v7a/freetype/include/freetype2)

file(GLOB_RECURSE SRCS *.cpp)
file(GLOB_RECURSE HDRS *.h)

add_library(nativeegl SHARED ${SRCS} ${HDRS})
target_link_libraries(nativeegl log android)

android_ndk_gdb_debuggable(nativeegl)
Run Code Online (Sandbox Code Playgroud)

和cmake发射参数:

-DCMAKE_TOOLCHAIN_FILE=android.toolchain.cmake \
-DANDROID_NDK=/opt/android-ndk -DCMAKE_BUILD_TYPE=Debug \
-DANDROID_ABI="armeabi-v7a" -DANDROID_STL=gnustl_static \
-DANDROID_NATIVE_API_LEVEL=android-21
Run Code Online (Sandbox Code Playgroud)

这是我在工作室中构建的原始Android.mk工作正常:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := nativeegl
LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/*.cpp))

LOCAL_C_INCLUDES :=
LOCAL_CFLAGS := -std=c++11 -O2 -Wtype-limits …
Run Code Online (Sandbox Code Playgroud)

cmake android-ndk

6
推荐指数
1
解决办法
5138
查看次数

Emscripten的CMake项目

我想制作CMake和Emscripten的朋友.没有在Emscripten项目网站上找到更多或更少信息的文档,但他们提供了CMake工具链文件,所以我认为它应该是可能的.到目前为止,没有高级参数的基本编译工作正常,但我在使用embind和预加载文件时遇到了问题.

  1. 链接过程似乎错过了Emscripten"二进制文件",并为所有与embind相关的函数生成警告,如下所示:warning: unresolved symbol: _embind_register_class在rowser中加载编译的JS文件时会导致相应的错误.
  2. .data编译期间不生成任何文件.

我创建了一个简约的示例,其中包括两个目标:一个"普通"(客户端)和一个手动(手动客户端),它只是运行emcc,因为我希望它运行:https://github.com/xwaffelx/minimal -cmake-emscripten项目/ BLOB /主/ README.md

虽然手动方式有效,但我认为这不是一种正确的方法......

---更新---

根据要求,这里有更简短的例子:

  1. CMakeLists.txt文件
    cmake_minimum_required(VERSION 2.8)
    cmake_policy(SET CMP0015 NEW)
    project(emtest)
    set(CMAKE_VERBOSE_MAKEFILE on)
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build.emscripten)
    include_directories("lib/assimp/include")
    link_directories("lib/assimp/lib-js")
    link_libraries("assimp")
    file(GLOB_RECURSE CORE_HDR src/.h)
    file(GLOB_RECURSE CORE_SRC src/.cpp)
    add_definitions("-s DEMANGLE_SUPPORT=1 --preload-file ${CMAKE_SOURCE_DIR}/assets --bind")
    add_executable(client ${CORE_SRC} ${CORE_HDR})
    

结果应该等同于手动运行以下命令:

emcc 
    -Ilib/assimp/include 
    -s DEMANGLE_SUPPORT=1
    --preload-file assets
    --bind
    Application.cpp 
    lib/assimp/lib-js/libassimp.so 
    -o client.js

这是Application.cpp:

#include "Application.h"

#include <iostream>

#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>

void Application::Initialize() {
    std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ cmake emscripten

4
推荐指数
1
解决办法
4278
查看次数

django-admin.py makemessages 不创建文件

我正在尝试为 django 项目启用翻译,django-admin.py makemessages -l de但似乎没有创建任何 .po 文件,尽管有几个{% trans ... %}in 模板和几个gettext(...)in 模型用于测试。根据文档https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-makemessages,该命令应该在整个项目树中搜索翻译并在 egconf/locale目录中创建相应的文件,如果没有指定设置。我得到的唯一输出是processing locale ru.

有什么方法可以调试它,或者我在谷歌中找不到的众所周知的陷阱?

django translation localization django-admin

2
推荐指数
1
解决办法
1605
查看次数