标签: native

如何将ocaml编译为本机代码

我真的很感兴趣学习ocaml,它很快(他们说它可以编译成本机代码)并且它的功能.所以我试着编写像启用mysql事件调度程序一样简单的代码.

#load "unix.cma";;
#directory "+mysql";;
#load "mysql.cma";;
let db = Mysql.quick_connect
  ~user:"username"
  ~password:"userpassword"
  ~database:"databasename"();;
let sql =
    "SET GLOBAL EVENT_SCHEDULER=1;"
    in
    (Mysql.exec db sql);;
Run Code Online (Sandbox Code Playgroud)

它在ocaml解释器上工作正常,但当我尝试将其编译为native(我使用的是ubuntu karmic)时,这些命令都没有工作

ocamlopt -o mysqleventon mysqleventon.ml unix.cmxa mysql.cmxa
ocamlopt -o mysqleventon mysqleventon.ml unix.cma mysql.cma
Run Code Online (Sandbox Code Playgroud)

我也试过了

ocamlc -c mysqleventon.ml unix.cma mysql.cma
Run Code Online (Sandbox Code Playgroud)

所有这些都产生了同样的信息

File "mysqleventon.ml", line 1, characters 0-1:
Error: Syntax error
Run Code Online (Sandbox Code Playgroud)

然后我试图删除"#load",所以代码就是这样

let db = Mysql.quick_connect
  ~user:"username"
  ~password:"userpassword"
  ~database:"databasename"();;
let sql =
    "SET GLOBAL EVENT_SCHEDULER=1;"
    in
    (Mysql.exec db sql);;
Run Code Online (Sandbox Code Playgroud)

ocamlopt结果消息

File "mysqleventon.ml", line 1, characters 9-28:
Error: …
Run Code Online (Sandbox Code Playgroud)

ocaml native compilation

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

如何为我的Native(C,C++)代码生成序列图?


我想知道如何为我的Native(C,C++)代码生成序列图.我用vim编辑器编写了我的C代码.

谢谢,

c native sequence-diagram

10
推荐指数
2
解决办法
5934
查看次数

Visual Studio:将相关的DLL复制到目标文件夹

我意识到之前已经问过这个问题 - 但是没有一个答案适用于我的具体案例:

  • 我有一个包含本机C++ EXE项目的解决方案,该项目依赖于40多个本机C++ DLL项目(在同一解决方案中).

  • EXE项目具有通常的调试,发布(和配置文件)配置,但由于它们使用相同的源代码库来构建三个不同的应用程序(例如A1,A2A3).此外,它以x32和x64为目标,因此总共有3 x 3 x 2 = 18个项目配置.

  • DLL项目由所有三个目标应用程序共享,因此只有3个(调试,发布,配置文件)时间2(x32,x64)= 6个配置.

  • 由于EXE项目依赖于DLL,因此无论何时修改,它都需要将DLL项目的相关输出复制到其目标文件夹(或其子文件夹).

你会如何处理DLL的更新?

  • 每个DLL项目中的构建后操作都不起作用(因为)它必须将DLL复制到A1,A2A3的相关输出文件夹.输出文件夹中的任何更改都会导致必须修改50个DLL项目中的每个项目中的构建后操作.

  • 我目前将DLL本身作为项目项添加到EXE项目中,并配置了自定义构建工具以将其复制到输出文件夹.但这需要我添加每个DLL 6次,所以我最终得到6 x 50 = 300个DLL!

我真正需要的是类似于复制本地选项,不幸的是只能使用程序集.您是否建议简化此构建设置?

build-process native visual-studio-2010

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

为什么在android上重定向stdout/stderr不起作用?

我下载了SDL 1.3并在我的Android 2.2设备上与OpenGL ES一起测试了它.它工作正常,但我没有得到printf呼叫的输出.我尝试了android开发者页面中提到的下面的命令,但是DDMS在Eclipse中都没有adb logcat报告程序使用的字符串printf.我确保过滤stdout标签.

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Run Code Online (Sandbox Code Playgroud)

我错过了什么或做错了什么?

android native stdout android-ndk

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

如何为Android设备编写死的简单本机SERVER程序(不是应用程序)?

首先,我相信,这不是一个重复的问题.我不想用NDK编写本机应用程序,我只想将Android设备用作廉价的Linux 服务器.在此上下文中,服务器表示没有UI的程序.此外,服务器是用裸C++编写的,但根本不使用任何库,所以这就是为什么这个问题与其他问题不同.

故事

我们为Linux编写了一个小型服务器,它有一个webserver接口,所以你用一个vanilla浏览器连接它,你可以玩它.我们已将其编译为Linux/x86,Linux/ARM(GuruPlug),Linux/PPC(某种NAS)和Mac OS X Darwin平台.

Linux/ARM版本在我的PalmPré智能手机上运行良好.我刚刚将可执行文件复制到我的手机上(在webOS场景中,没有像越狱这样的东西,有一个官方的"开发者模式",如果你通过输入一个密钥组合激活,你可以用ssh登录你的手机或使用本地ssh应用程序).因此,即使是最小的Linux设备,我们的小型服务器程序(守护程序,可能会说)也在运行.(将千兆级桌面计算机的浏览器连接到智能手机服务器时,这很有趣.)

服务器程序设计为即使在最小的Linux上运行(正如我所说,它运行在NAS,路由器,智能手机上),它只需要STDLIB和PTHREADS.

这个问题

在Android设备上运行简单的服务器程序的直接方法是什么?

  • 我们还没有Android设备.但我认为,任何基于ARM的都可以.服务器的内存占用空间很小,没问题.
  • 我假设,设备必须是root用户才能将可执行文件复制到它并运行.
  • 我不想在设备上安装全新的Linux.它应该继续运行Android,而我们的服务器在后台运行.对于Dalvik而言足够的Linux发行版对我们的服务器来说已经足够了,我很确定.
  • 服务器不应该使用外部设备(USB,触摸屏,音频,摄像头,麦克风 - 谢谢,而不是)仅用于网络服务器的端口(例如8080),这不是由Android分配的.
  • 我有ARM GCC工具链,它的安装不是问题的一部分(除非有技巧).
  • 程序的安装应该是手动的(scp,无论如何).此外,我不想制作包或任何自动部署.
  • 启动服务器程序的问题是另一个问题,我们现在忽略了.

所以,我想用Andrid设备(手机,平板电脑)做同样的事情,就像我在我的webOS设备上做的那样:复制服务器程序并运行它.计算机就是这样,运行程序,不是吗?;)

linux android native pthreads

10
推荐指数
2
解决办法
844
查看次数

使用NGEN创建的.NET本机映像未加载

我已经使用NGEN来创建我的应用程序使用的几个程序集的本机映像.但是,运行应用程序时不会加载这些图像,我不知道为什么.

这是来自fuslogvw的典型日志:

*** Assembly Binder Log Entry  (2/05/2012 @ 13:29:04) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\MyDir\MyApp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = ***\***
LOG: DisplayName = MyAssembly, Version=1000.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified)
LOG: Appbase = file:///C:/MyDir/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = …
Run Code Online (Sandbox Code Playgroud)

.net native image ngen fuslogvw

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

在本机C++应用程序中托管WPF表单时的性能问题

我有WPF窗口,它在WPF应用程序中托管时运行正常,但是当我从我的本机C++应用程序中加载它时,渲染和UI线程块需要很长时间才能完成.

我窗口上的主要攻击者是一系列项目控件,用于显示9到12个图标网格,这些图标代表我系统中组件的状态.

初始渲染的整个项目控制最多需要14秒.(在WPF应用程序中运行时几乎是即时的)

每行都有一个文本标题,单击该标题时会显示每个状态图标的小数据摘要(max,min,mean,std dev).单击此标题最多可能需要4秒才能呈现摘要,但在我的WPF应用程序中是即时的.

是否有任何已知的技巧使WPF在本机应用程序中表现良好?

[编辑]

我刚刚尝试使用以下代码从大型.NET窗体应用程序启动它:

    public bool? ShowWpfDialog(System.Windows.Window window, Form owner)
    {
        var helper = new System.Windows.Interop.WindowInteropHelper(window)
                         {Owner = (owner == null) ? IntPtr.Zero : owner.Handle};
        return window.ShowDialog();
    }
Run Code Online (Sandbox Code Playgroud)

我遇到与从本机应用程序运行时相同的性能问题.(.net应用程序也运行本机代码.)

[编辑]

当我不使用WindowInteropHelper时,代码执行正常:

    public bool? ShowWpfDialog(System.Windows.Window window, Form owner)
    {
        //var helper = new System.Windows.Interop.WindowInteropHelper(window)
        //                 {Owner = (owner == null) ? IntPtr.Zero : owner.Handle};
        return window.ShowDialog();
    }
Run Code Online (Sandbox Code Playgroud)

什么是WindowInteropHelper会导致性能问题?

[编辑]

当我使用WindowInteropHelper向所有者加载资源时,是否存在资源解决方式的问题?

c++ wpf performance native

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

使用WebRTC构建iOS Native App

我正在寻找4天,但无法得到它.我构建了所有库并将其集成到我的自定义项目中,但我不知道应该采取哪些步骤来使其工作.我在代码示例\解释中找到的唯一一件事就是tech.appear.in/2015/05/25/Getting-started-with-WebRTC-on-iOS,但它对我来说很糟糕且不清楚,AppRTCDemo源代码也是如此.我读过关于浏览器的WebRTC但仍无法在iOS上重现它.任何人都可以解释或提供关于如何使用WebRTC API完全构建iOS本机应用程序的解释链接,例如p2p ios chat?

除了我不理解demo中提供的代码逻辑这一事实,我无法理解:

1)我的iOS应用程序的ICE服务器是什么?我应该好好照顾吗?它是服务器端的东西吗?我应该自己编码和运行它,还是我可以使用现有的Parse背景?

2)iOS应用程序中的信令机制是什么?它只是客户端,还是必须在服务器端实现?

3)也许有人可以解释一步一步的指南,也许有一些代码,如何使用WebRTC实现简单的iOS p2p聊天?例如:

"你必须:

  1. 使用this = source =和本教程= tutorial =在解析核心上创建ICE/STUN/TURN服务器.

  2. 使用创建的ICEServer创建RTCPeerConnection: RTCPeerConnectionFactory *pcFactory = [[RTCPeerConnectionFactory alloc] init]; RTCPeerConnection *peerConnection = [pcFactory peerConnectionWithICEServers:kICEServerURL constraints:nil delegate:self];

  3. 使用创建DataChannel ...

  4. 使用...解释发送信号= link =

  5. 设置本地和远程描述 ...

  6. ...使用发送数据...

  7. ......"或类似的东西.

我很抱歉这个问题,但是我想失去理智.谢谢!

iphone native objective-c ios webrtc

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

iOS等效的iOS ActionSheet

iOS SDK中UIActionSheet的Android等价是什么?我正在研究React-Native项目,并且需要尽可能保持本机控件的使用.我没有遇到使用相应的plartform'动作表'的npm包或其他包.他们似乎都使用iOS中的原生动作表,以及Android的iOS动作表的javascript模拟(这使得它在Android上非原生).如果我能知道android显示哪个iOS显示动作表,那么我可以使用适用于Android的RN Android组件和iOS的动作表.我希望这是一个明确的问题.

android native uiactionsheet ios react-native

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

通过ABI在Android上拆分资产

我看过本指南,了解如何为每个ABI构建拆分的APK。

但是我的应用程序嵌入了许多本机可执行文件作为资产。是否可以根据ABI过滤它们?

相关部分build.gradle

android {
    ...
    splits {
        abi {
            enable true
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
            // builds assets and places them in src/main/assets
        }
    }
    sourceSets {
        main {
            assets.srcDirs = ['src/main/assets']
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用CMake构建本机可执行文件后,示例应用程序树:

src
  + main
      + assets
          + x86
          |   + native-x86.bin
          + x86_64
          |   + native-x86_64.bin
          + armeabi-v7a
          |   + native-arm.bin
          + arm64-v8a
              + native-aarch64.bin
Run Code Online (Sandbox Code Playgroud)

每个ABI目录都包含本机二进制文件

我希望每个拆分的APK仅包含特定于ABI的资产目录,并过滤其他目录。例如,对于arm64 APK:

assets
   + arm64-v8a
       + native-aarch64.bin
Run Code Online (Sandbox Code Playgroud)

android assets native

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