设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8243|回复: 11

[求助]

    [复制链接]
发表于 2015-4-15 09:44:16 | 显示全部楼层 |阅读模式
请问可以直接把C++程序导入到emplant中么?急
发表于 2015-4-15 11:15:03 | 显示全部楼层
应该不行吧,这是系统自带的语言,和C不一样
 楼主| 发表于 2015-4-15 13:42:37 | 显示全部楼层
kunny 发表于 2015-4-15 11:15
' L4 t" G, p6 m5 |; {  O7 J应该不行吧,这是系统自带的语言,和C不一样
0 h3 H+ i/ R9 N, \/ f
好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56 8 s+ z. ~& @& v2 @
可以调用C++。
0 p- }. s. G# K
请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is
    - q/ R1 ]: E2 n  h2 f  q
  2.         r:real; file:string;
    & F$ F1 z* _' t" M4 I$ V
  3. do
    - ]' |& \1 c: _9 g  _; B9 S' D
  4.         openConsole;
    0 @+ b* K( j0 Z( k9 F8 N. Z

  5. $ d2 [5 ~% D' Z5 u
  6.         /*1 ]6 U: a- H9 W' g
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",, `! T0 }9 x; W
  8.                                    when is64BitApplication then 64 else 32,# A( Y: r" K, A) u. b
  9.                                    "bit.dll");
    ! a* D" N  X: O; P! z4 k
  10.                            */
    * }; d) ?: ^% G
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";
    ! L- q9 l! r! c  J8 s& N
  12.         local j := loadLibrary(file);  {1 M* j( V" G  E
  13. 0 @! |& l7 p  Q! v4 V
  14.         if j > 0 then* b( t& T$ ~3 B' a- x0 z, m. [: J9 R
  15.                 print getLoadedLibrary(j)," is loaded.";
    + _+ f2 v# T; z

  16. % d1 O6 o! x8 p1 a7 C" \, p
  17.                 r := callLibrary(j, "calcSin", PI/6);
    ) H" R/ [0 q# T' ]
  18.                 promptmessage(to_str("sin(PI/6) = ", r));8 D* }; S+ F$ H- ]3 e4 b& M
  19.                
    / U) Y7 Q$ W- Q/ l  T, L' f
  20.                 local str:string;
    - A4 T# K% r6 I; c! u$ ~
  21.                 str := "I'm OK!";
    6 l$ ^. }# H$ @6 H, Q4 l6 p0 \
  22.                 str := callLibrary(j,"resetStr",str);/ U* }6 j) ?+ r) F1 k
  23.                 promptmessage(str);& M! }3 u6 Y( W0 @; Z0 q: O5 D
  24.                
      r( _6 X) ~7 S" L' g
  25.                 callLibrary(j, "listAccess", Tablefile);
    4 Z* h, O* p9 D. @; C: U
  26.                
    $ Z% I; \8 C; O0 s8 ~$ _
  27.                 print "Unloading: ", freeLibrary(j);) q  B, p7 B; d5 T% f2 u1 n& N
  28.         end;
    , ~4 W$ F: i/ R! @; G
  29. end;% F3 }' D2 ~7 r, D& o  H) k9 M
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12

2 @0 b( `& e: V9 C7 C4 y6 `8 e不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?. A' a7 Z  M! Z2 P  R1 j
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。
9 f+ J3 s0 x2 j注意接口参数传递。
4 \( l5 v, F+ M+ _  x& U; b6 X4 w1 L) u2 k' x+ U
感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
' L/ x# _) q$ w( k不明白你为什么需要调用C++程序,正常是不需要用到的。
. e% x6 e( l  Z. @7 L9 N" S7 T
就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17   J: A* n. @" y, `) ?4 u$ \& d  @
plant自带的例子里面有教你方法,你好好看看。

  V+ H" o* l/ x) D% A/ p哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-9-17 10:12 , Processed in 0.016635 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表