小编Phi*_*ipp的帖子

如何处理传递/返回emscripten编译代码的数组指针?

我是Emscripten/javascript以及Overstack社区的新手.如果我的情况已经得到解决,我会事先道歉.

在Windows 7环境中,我使用emcc编译了一个简单的c程序,它接受一个数组并对其进行修改(见下文).

double* displayArray(double *doubleVector) {

   for (int cnt = 0; cnt < 3; cnt++) 
       printf("doubleVector[%d] = %f\n", cnt, doubleVector[cnt]);

   doubleVector[0] = 98;
   doubleVector[1] = 99;
   doubleVector[2] = 100;

   for (int cnt1 = 0; cnt1 < 3; cnt1++) 
       printf("modified doubleVector[%d] = %f\n", cnt1, doubleVector[cnt1]);

   return doubleVector;
}

int main() {

   double d1, d2, d3;
   double array1[3];
   double *array2;

   array1[0] = 1.00000;
   array1[1] = 2.000000;
   array1[2] = 3.000000;

   array2 = displayArray(array1);

   for (int cntr =0; cntr < 3; cntr++)
       printf("array1[%d] …
Run Code Online (Sandbox Code Playgroud)

javascript emscripten

30
推荐指数
2
解决办法
9293
查看次数

np.r_做什么(numpy)?

以下代码取自此处

sa = sort(a[i:i+block])
n += np.r_[sa.searchsorted(bins[:-1], 'left'),
           sa.searchsorted(bins[-1], 'right')]
Run Code Online (Sandbox Code Playgroud)

所以我知道searchsorted在数组sa中找到bins必须插入元素的位置以便保持sa排序(left给出我们将插入值和right右索引的位置的索引).我不明白的是它周围的整个建筑意味着什么

np.r_[array,array]
Run Code Online (Sandbox Code Playgroud)

什么是np.r_

python numpy

24
推荐指数
2
解决办法
2万
查看次数

使用 emscripten 将数组传递给 C 函数

我认为这个问题与这个问题类似,我使用了它的大部分答案来解决我的问题,但我仍然有问题:

首先是C代码:

#include <stdio.h>

extern "C"
{
    void fillArray(int* a, int len)
    {
        for (int i = 0; i<len; i++)
        {
            a[i] = i*i;
        }

        for (int j = 0; j < len; ++j)
        {
            printf("a[%d] = %d\n", j, a[j]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将一个指向数组的指针传递给我的 C 函数,并用一些信息填充它。我用以下代码编译这段代码

emcc -o writebmp.js dummyCode\cwrapCall.cxx -s EXPORTED_FUNCTIONS="['_fillArray']"
Run Code Online (Sandbox Code Playgroud)

我的 html/js 代码如下:

<!doctype html>
<html>
  <script src="writebmp.js"></script>
  <script>
    fillArray = Module.cwrap('fillArray', null, ['number', 'number']);
    var nByte = 4
    var length = 20;
    var buffer = Module._malloc(length*nByte); …
Run Code Online (Sandbox Code Playgroud)

c arrays emscripten

7
推荐指数
1
解决办法
4727
查看次数

基于C ++文本的RPG库存系统

我目前正在学习编程2类(c ++),我们受命制作基于文本的rpg。我将此帖子用作库存系统的参考,因为我认为它非常有效。但是我一直遇到E0349“没有运算符“ ==”或“ <<”与这些操作符匹配“错误。

如果有人可以帮助我,那就太好了。这是我的全套代码:

#include "pch.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <vector>
#include <ostream>
#include <Windows.h>
#include <string>
#include <cctype>
using namespace std;

  struct Item {
    string name; //Item name.
    int slot; //Head, Torso, Hands
    int attack;
    int knowledge;
    int defense;
    int hp;
    int speed;
    int charisma;
  };

int main()
{

    //Variables, Strings, etc.
    int itemcounter = 0, counter = 0;


    //"Empty" Item
    Item Empty{ "<Empty>", 0, 0, 0 };

    vector<Item> Equipment = { 6, …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

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

具有原始数据指针和 emscripten 的对象

重新表述一下问题:

当我先验不知道数组的长度时,我应该如何将一个从 C/C++ API 返回一个以数组作为成员变量的对象的函数绑定到 javascript?


我有一个带有原始数据类型指针的结构

struct Person
{
    const char* name;
    int age;
    Person()
    {}
};
Run Code Online (Sandbox Code Playgroud)

我有一个函数应该返回这个结构的对象

Person getPerson()
{
    Person p = Person();
    p.name = "Philipp";
    p.age = 77;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

以及以下约束:

EMSCRIPTEN_BINDINGS() {
    value_object<Person>("Person")
        .field("age", &Person::age)
        .field("name", &Person::name)
        ;

    function("getPerson", &getPerson);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,编译器还告诉我,static_assert failed "Implicitly binding raw pointers is illegal. Specify allow_raw_pointer<arg<?>>" 我试图理解API 文档,但无法使其工作。例如,我尝试将allow_raw_pointer()(及其变体)添加到 of.fieldname

c++ pointers emscripten

5
推荐指数
1
解决办法
2183
查看次数

在不复制的情况下将现有的ArrayBuffer绘制到画布中

我有一个Uint8ClampedArray包含位图的。下面的作品,但我想避免缓冲区的复制,据我所知ImageData.set复制ArrayBuffer。

var mappedBuffer = new Uint8ClampedArray(Module.HEAPU8.buffer, offset, length); // Creates a view on the emscripten heap
var imageData = ctx.createImageData(width, height);
imageData.data.set(mappedBuffer); // copy here
ctx.putImage(imageData, 0, 0);
Run Code Online (Sandbox Code Playgroud)

有没有一种避免复制的方法,以便我们可以直接绘制到画布上而无需先复制?

html javascript

3
推荐指数
1
解决办法
2984
查看次数

VS 2017中的项目向导在哪里?

我想创建一个静态库,我想在VS2017社区的其他项目中使用,但我找不到正确的方法.我试着按照这里针对VS2015 的说明进行操作,但是当我想创建一个新项目时,我可以提供名称,解决方案名称,解决方案的位置以及是否要为解决方案创建目录以及使用git存储库与否.

我记得一个项目向导,我可以在其中取消选择预编译的头文件并将输出设置为静态库.

有什么改变或我错过了一个组件?

static-libraries visual-studio-2017

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

求和数组的前m个元素

我有一个长度为n的数组.是否有函数允许我计算该数组的前m个元素的部分和(m <= n)?

我想到了这样的事情

sum(X,1:10) %returns the sum of the 10 first elements of the array
Run Code Online (Sandbox Code Playgroud)

但这不起作用.Sum似乎只计算整列,行或更高维度的等价物.

编辑:我想知道是否有matlab函数这样做 - 我可以自己编程,但有可能它更慢,可以做可能奇怪的事情:)

我的功能看起来像这样:

function[sum] = partialSum(X,m)
sum = 0;
for i = 1:m
    sum = sum + X(i);
end
Run Code Online (Sandbox Code Playgroud)

matlab

1
推荐指数
1
解决办法
3万
查看次数

为什么在Java正则表达式中,“ \。”不是有效的转义序列

在您构建股票观察者的GWT教程中,此正则表达式用于检查输入是否有效:

if (!symbol.matches("^[0-9A-Z\\.]{1,10}$"))
Run Code Online (Sandbox Code Playgroud)

允许输入1到10个字符(数字,字母或点)。

令我困惑的部分是 \\.

我将其解释为转义的反斜杠\\,然后a .代表任何字符。而且我认为正确的表达方式是\.转义点,但是这样做会导致eclipse中的regex错误Invalid escape sequence

我在这里想念明显吗?

java regex

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

C++ 未实现异常

从这里的答案我实现了我的课程NotImplementedException

//exceptions.h
namespace base
{
    class NotImplementedException : public std::logic_error
    {
    public:
        virtual char const* what() { return "Function not yet implemented."; }
    };
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我想抛出以下异常(相同的命名空间):

    std::string to_string() override
    {
        throw NotImplementedException();
    }
Run Code Online (Sandbox Code Playgroud)

to_string方法是抽象基类的重写方法。

namespace BSE {
    class BaseObject
    {
        virtual std::string to_string() = 0;
    };
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,前面的代码的编译显示了这个错误:

error C2280: BSE::NotImplementedException::NotImplementedException(void)': attempting to reference a deleted function`
Run Code Online (Sandbox Code Playgroud)

这里我了解到问题与移动构造函数或赋值有关,根据cppreference.com - throw (1)可能是这种情况:

首先,从表达式复制初始化异常对象(这可能会调用右值表达式的移动构造函数,并且复制/移动可能会受到复制省略的影响)

我尝试添加

    NotImplementedException(const NotImplementedException&) = default;
    NotImplementedException& operator=(const NotImplementedException&) = default; …
Run Code Online (Sandbox Code Playgroud)

c++ move

0
推荐指数
1
解决办法
8575
查看次数