有没有更好的方式来投Vec<i8>来Vec<u8>鲁斯特除了这两个人?
std::transmute根据文档,(1) 很慢,(2) 是“转化应该是绝对的最后手段” 。
可能有一点背景知识:我Vec<i8>从不安全的gl::GetShaderInfoLog()调用中得到了一个,并希望通过使用String::from_utf8().
我在类上有一个方法,使特定实例成为"活动"实例:
void makeActive() { activeInstance = this; }
Run Code Online (Sandbox Code Playgroud)
但是,因为activeInstance有类型,它不起作用std::shared_ptr< ClassName >.我怎样才能投this来std::shared_ptr<ClassName>?
我正在尝试使用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) 我已经开始在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和Emscripten的朋友.没有在Emscripten项目网站上找到更多或更少信息的文档,但他们提供了CMake工具链文件,所以我认为它应该是可能的.到目前为止,没有高级参数的基本编译工作正常,但我在使用embind和预加载文件时遇到了问题.
warning: unresolved symbol: _embind_register_class在rowser中加载编译的JS文件时会导致相应的错误..data编译期间不生成任何文件.我创建了一个简约的示例,其中包括两个目标:一个"普通"(客户端)和一个手动(手动客户端),它只是运行emcc,因为我希望它运行:https://github.com/xwaffelx/minimal -cmake-emscripten项目/ BLOB /主/ README.md
虽然手动方式有效,但我认为这不是一种正确的方法......
---更新---
根据要求,这里有更简短的例子:
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) 我正在尝试为 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.
有什么方法可以调试它,或者我在谷歌中找不到的众所周知的陷阱?
c++ ×3
cmake ×2
emscripten ×2
android-ndk ×1
c++11 ×1
casting ×1
django ×1
django-admin ×1
javascript ×1
localization ×1
rust ×1
shared-ptr ×1
string ×1
translation ×1
vector ×1
web-worker ×1