Armadillo使用介绍(三):第一个Armadillo程序

源码

#include <iostream>
#include <armadillo>//包含armadillo头文件

using namespace std;
using namespace arma;//armadillo命名空间

int main(int argc, char** argv)
  {
  mat A = randu<mat>(4,5);//4行5列矩阵
  mat B = randu<mat>(4,5);
  
  cout << "A*B.t():\n" << A*B.t() << endl;//.t()向量或矩阵转置
  (A*B.t()).print("A*B.t():");

  system("pause");

  return 0;
  }

运行结果

A*B.t():
   0.9536   1.0573   1.0669   0.9087
   0.3911   0.6334   0.6719   0.7834
   1.7734   2.6922   2.1078   2.4613
   0.8542   1.1044   0.8725   0.9546

A*B.t():
   0.9536   1.0573   1.0669   0.9087
   0.3911   0.6334   0.6719   0.7834
   1.7734   2.6922   2.1078   2.4613
   0.8542   1.1044   0.8725   0.9546
请按任意键继续. . .

参考:armadillo库文档First time users: please see the short example program

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Armadillo 是一套强大的软件保护系统,可以为您的程序添加装甲般的外壳。通过艺术性的加密、数据压缩和其它安全特性保护您的程序不被盗版和破解。Armadillo 可以让您在5分钟内为您的程序设计并添加一套完全的软件保护和注册系统,并且不需要您修改任何程序代码!Armadillo 支持所有语言编写的32位 Windows EXE 文件。 1、Nanomites Processing   Nanomites是Armadillo嵌入子进程的INT 3中断,虽然在GETRIGHT FINAL版本里没有使用nanomites 保护,但是却在CRUSADER写的教程里的beta版本里用了。 可能有 50, 100甚至 200个INT 3,它们被放入了子进程的第一个section ,以阻止子进程脱离父进程运行。INT 3中断替代了原始文件的条件跳转。所以每当父进程接收到INT 3中断,它就到存放跳转类型的report中去,看一下标志以决定是否跳转,然后测算出新的EIP,改变到子进程中去然后继续运行直到下一个 INT 3。 2、输入表乱序   Import Table Elimination一般是把输入表放在壳申请的内存处并且乱序处理。   对于输入表乱序,以前有两种解法:①、写代码重新排序;②、直接用ImportRec“创建新的IAT”功能来构造新的输入表。 3、代码拼接   Armadillo会把程序中的部分代码挪移到壳申请的内存段运行,普通dump会导致此部分代码丢失,可以使用ArmInline工具来修复这部分代码 4、内存校验   内存补丁保护可以防止攻击者使用Loader改变更程序的代码。这是付费版本,内存保护将更强大。如果您使用此选项,您必须使用CopyMem-II或Debug-Block,否则本项保护将无法启用。   使用内存保护时应注意,不要在程序里添加自修改代码,否则程序将会自动退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值