标签: cross-language

你能用C++调用Ada函数吗?

虽然我在HS期间使用Pascal 2 - 3年,但我是一个完整的Ada新手.

IIRC,可以从C/C++调用Pascal编译函数.是否可以从C++调用Ada编写的过程和函数?

c c++ cross-language ada

5
推荐指数
2
解决办法
3367
查看次数

在 python 和 javascript 中生成 SHA256 哈希会导致不同的结果

我在加密明文时遇到问题。

我在Python中做什么:

def encrypt(plaintext):
    import hashlib, base64

    hashed = hashlib.sha256(plaintext).digest()
    return base64.b64encode(hashed)

def main():
    input_value = "a"
    output = encrypt(plaintext=input_value)
    print output

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

Python 中的结果:

ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs=
Run Code Online (Sandbox Code Playgroud)

我在 JS 中做什么:

ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs=
Run Code Online (Sandbox Code Playgroud)

JS 中的结果:

ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么?

或者有没有办法在两种语言中获得相同的加密结果?

顺便说一句:对我来说更改 python 代码会更容易,因为我的数据库中已经有 CryptoJS 加密的值。

hash encoding cryptography cross-language cryptojs

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

在具有不兼容代码的C ++代码中使用C库

我想在C ++代码中使用C库,而无需对其进行修改。

该库包含与c ++不兼容的代码片段,例如:

  • C ++关键字newdelete
  • _Atomic 宾语
  • 错误的声明

我将C库编译为.so。而且我还在另一个C代码上使用了它,并且效果很好(实际上,我想制作此代码的C ++版本)。

我的CMakeLists:

# Specify the minimum CMAKE version required
cmake_minimum_required(VERSION 2.8)

# Project name
project(myproject)

# Header files
set(HEADERS myCpp.h)

# Source files
set(SOURCES myCpp.cpp)
add_executable(myproject myCpp.cpp myCpp.h)

# Link libraries
LINK_DIRECTORIES(/usr/lib/libfrr.so)
target_link_libraries(${PROJECT_NAME}  frr)


set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
set(CMAKE_CXX_FLAGS "-fpermissive")
Run Code Online (Sandbox Code Playgroud)

我的标题开头为:

extern "C"{
        #include "lib/libfrr.h"
}
Run Code Online (Sandbox Code Playgroud)

我有很多错误。一点汇编:

/lib/module.h:88:3: error: expected primary-expression before '.' token
   .r.info = &_frrmod_info,        

/lib/thread.h:123:2: error: '_Atomic' does …
Run Code Online (Sandbox Code Playgroud)

c c++ cross-language

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

允许方法在Java中锁定其父对象

在Java中有没有办法获得一个方法来锁定(互斥)它所在的对象?

我知道这听起来令人困惑,但基本上我对C#的这个片段并不公平,但在Java中.

lock(this)
{
    // Some code here...
}
Run Code Online (Sandbox Code Playgroud)

我的任务是将用.Net编写的API重新实现到Java中,并且我被要求保持Java版本尽可能与.Net版本类似.事实上,.Net版本看起来像是从我无法访问的C++版本转录而来的.

无论如何,上面的行出现在C#版本中,我需要在Java中做同样的事情.

c# java cross-language code-translation

4
推荐指数
2
解决办法
2611
查看次数

用PHP加密,用Python解密

PHP代码:

$key = "12345678abcdefgh12345678abcdefgh";
$iv = "12345678abcdefgh";
$plaindata = "This is a test string.";

$enc = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaindata, MCRYPT_MODE_CBC, $iv));

echo($enc);
Run Code Online (Sandbox Code Playgroud)

结果:

QBN0Yue3D9hBrBuD01n5KWG+lv2doMf97cKm/AeusAI=
Run Code Online (Sandbox Code Playgroud)

如何在Python中解密?

php python encryption cross-language

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

什么是另一种语言的Cobol 88型等效物?

我现在正在学习COBOL并且非常喜欢88类型的变量,我想知道是否有其他语言(大多数已知语言,如C,Objective-C),甚至使用库.

我唯一能想到的就是使用

#define booleanResult (variableName==95) 
Run Code Online (Sandbox Code Playgroud)

但它不是可以设置boolenResulttruevariableName承担95为值.

cobol cross-language

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

为什么C++和Java中的动态数组具有不同的初始容量?

所以我一直在寻找动态数组的实际工作方式.我发现的是两个不同的概念.

在C++中

在C++中,动态数组通常由向量实现.向量将容量设置为0,增加计数以插入新元素,然后将新插入的容量大小加倍.

vector.h

/*
 * Implementation notes: Vector constructor and destructor
 * -------------------------------------------------------
 * The constructor allocates storage for the dynamic array and initializes
 * the other fields of the object.  The destructor frees the memory used
 * for the array.
 */

template <typename ValueType>
Vector<ValueType>::Vector() {
   count = capacity = 0;
   elements = NULL;
}
Run Code Online (Sandbox Code Playgroud)

用于扩展矢量大小

/*
 * Implementation notes: expandCapacity
 * ------------------------------------
 * This function doubles the array capacity, copies the old elements into
 * the new …
Run Code Online (Sandbox Code Playgroud)

c++ java arrays cross-language stdvector

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

有没有办法将原始byte []反序列化为thrift对象而不知道它的thrift类型?

我正在运行一个需要的项目

  • 不同编程语言之间的相互通信(主要是java,c ++).
  • 可以序列化/反序列化为二进制格式和json格式.
  • IDL为不同语言生成类代码

虽然我们不需要其RPC功能,但Thrift完全符合这些标准.我们将通过MQ发送/接收序列化的thrift数据.序列化对象非常简单.但是,当涉及反序列化时,我们不能做这样的事情:

byte[] data = recv();
Object object = TDeserializer.deserialize(data);
if (object instanceof TypeA) {
    TypeA a = (TypeA) object;
} else if (object instanceof TypeB) {
    TypeB b = (TypeB) object;
}
Run Code Online (Sandbox Code Playgroud)

似乎我们必须告诉thrift它需要反序列化到哪个结构:

byte[] data = recv();
TypeA a;
TDeserializer.deserialize(a, data);
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有办法在不知道其确切类型的情况下将原始数据反序列化为thrift对象.

谢谢!!

cross-platform thrift cross-language message-queue protocol-buffers

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

如何将 C# 类似字符串的变量传递给 sbyte* 参数?

我继承了一个 C++ DLL 及其相关头文件,其函数声明如下

int func1(int i);
int func2(char* s);
Run Code Online (Sandbox Code Playgroud)

我还继承了一个参考VC++参考类,它包装了上面的DLL以便在C#环境中使用

public ref class MyWrapperClass
{
    int func1_w(int i)
    {
        return func1(i);
    }
    int func2_w(char* s)
    {
        return func2(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的 C# 应用程序中,我可以使用 func1_w(int i),但我不明白如何将字符串传递给 func2_w(sbyte* s):我收到一条关于无法获取指向 sbyte 的指针的错误。我将 C# 项目设置为不安全,并将该函数声明为不安全。

如何将 sbyte* 参数传递给函数 func2_w?

c# c++ string cross-language sbyte

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

Lua 5.1 dll 错误:第 1 行需要等号?

我有以下代码:

int luaopen_Library()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

尝试调用require "Library"会引发以下错误:

Library.dll:1: '=' expected
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?如果需要更多信息,请告诉我;我是使用 dll 的新手。

dll multilingual lua cross-language lua-5.1

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