设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7119|回复: 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
7 ]6 \! p7 d3 N. [  z& I3 e' s应该不行吧,这是系统自带的语言,和C不一样
. C# N1 r6 G2 U& E" h) t- L4 h
好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56
- A7 H& F; `! M' Z) ^9 O可以调用C++。

. L+ x0 }" g7 {! n4 I3 e请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is+ q2 c3 r8 _$ H4 [) L3 M2 k
  2.         r:real; file:string;
    ) i8 R. l& d+ D7 N3 \
  3. do
    $ G- ?( {) y3 R0 O; g
  4.         openConsole;8 t% q) P2 c3 I& \3 ^) u  `0 F

  5. 6 |' H3 q7 [+ ?( p/ S* x2 F
  6.         /*
    8 x' v- g. \# T- F/ A- e9 h% c
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",
    + }( d! g5 p5 e0 n2 J
  8.                                    when is64BitApplication then 64 else 32,
    3 ?& K: _$ a9 B- \# t( p
  9.                                    "bit.dll");1 y( ~) B) h7 W
  10.                            */
    7 s: I# B8 p* G" [, ^! @9 i8 E
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";6 m. O% ^) t# @
  12.         local j := loadLibrary(file);
    3 |; k  j7 z8 o& p* \9 p" u
  13. 7 |1 k/ D- w4 P/ d. y' A4 o0 E" t: {
  14.         if j > 0 then
    9 ?' u' O* C! \: S5 V9 ^) \; t
  15.                 print getLoadedLibrary(j)," is loaded.";7 H9 ]. i7 Z' ^1 m$ G) u  E

  16. 8 i) h' E& U# }" |
  17.                 r := callLibrary(j, "calcSin", PI/6);. I" J2 M" d: }% z8 R) [) _
  18.                 promptmessage(to_str("sin(PI/6) = ", r));
    ) Q7 a, T5 g+ a/ q( a
  19.                 : P9 e' |* N8 Z( ?: L4 s) w
  20.                 local str:string;, v/ _9 Y/ ^" x2 o
  21.                 str := "I'm OK!";
    : @, g* }) c% p) f- G
  22.                 str := callLibrary(j,"resetStr",str);
    6 K1 F+ j$ [& ]# Y) r
  23.                 promptmessage(str);
    - C2 I, P- G! `7 N0 |  h
  24.                
    % b  k% ~" q+ N+ \  G6 j  ]  c
  25.                 callLibrary(j, "listAccess", Tablefile);' H1 j3 n: K4 X8 I  t) Y( {
  26.                
    0 `" m$ {# r% h) X. Z$ I; S) x
  27.                 print "Unloading: ", freeLibrary(j);; Q( J: A: u$ @* a& e
  28.         end;/ a/ [' B$ u  E
  29. end;
    ; ^* G$ `) d$ D5 e* D
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12

+ |9 Q2 G- U( e: J. @5 y不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?
  p0 Y) g! m) q6 A' Y2 e
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。+ V5 z0 W$ I+ i
注意接口参数传递。6 R% M% W5 b# {+ Y
* i* U& g, P0 k, K
感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
& g% f7 Q7 n4 h! o1 ~% A不明白你为什么需要调用C++程序,正常是不需要用到的。

: H9 k% x+ s$ I; I. p, C0 q就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17
/ G1 y& }+ g& e0 w& H8 l. ]plant自带的例子里面有教你方法,你好好看看。
' h: N/ }( w8 g" g: r
哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-21 16:53 , Processed in 0.022567 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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