设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8210|回复: 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
( e8 ?% W& Y& \0 S! Z应该不行吧,这是系统自带的语言,和C不一样

- f4 S# O9 ]9 r" H6 `好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56
5 ]$ s" G' s. d- [可以调用C++。
( z- W  G: n+ J8 U6 y) X% D: E
请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is
    , M% m. }' o1 I" i/ b  E
  2.         r:real; file:string;+ m( F! q4 g: J0 O, ?
  3. do( i; l6 H; D) Q  M: J4 O
  4.         openConsole;
    ' [( S2 W5 J# @+ `5 U+ ^
  5. , L% r2 D% W/ t( \
  6.         /*. T: @+ i) n) V# u/ I5 c1 i" E. P
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",% h* ]6 P- Y* a; H/ v, _
  8.                                    when is64BitApplication then 64 else 32,
    + z3 U. g/ l4 \1 v, R9 _
  9.                                    "bit.dll");
    9 y% v" ?# X$ |$ v: y0 V! c$ W' k
  10.                            */
    * ~4 ]! H8 H6 E* V5 m. |1 h
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";
    + ]1 F7 f  d; `3 y
  12.         local j := loadLibrary(file);
    7 r0 v* @( c& W% K5 U
  13. + I6 ^5 }4 l( G5 \/ z# N
  14.         if j > 0 then. R* D; W1 z6 ~- X4 n3 j
  15.                 print getLoadedLibrary(j)," is loaded.";: ^/ @. n; r" ]9 r! U

  16. # D! c2 m4 @# M
  17.                 r := callLibrary(j, "calcSin", PI/6);) o! h' U& }; W) {/ j" B1 ^
  18.                 promptmessage(to_str("sin(PI/6) = ", r));/ t* `2 m2 F8 N6 h
  19.                 1 O# V8 K# r) K: u& u
  20.                 local str:string;2 a+ Z# B4 R  `$ E
  21.                 str := "I'm OK!";0 Z8 W; n8 y% V8 }. k$ J6 I
  22.                 str := callLibrary(j,"resetStr",str);# C9 c5 |; G6 |! k* D' Y, c
  23.                 promptmessage(str);
    $ k( H# Y4 L2 f! h- Z; n
  24.                
    / z9 ~4 \( n$ B- N$ D  N
  25.                 callLibrary(j, "listAccess", Tablefile);
    ! }3 S3 W: `- Q+ B/ U- R  s# @
  26.                 . I- c0 B, I4 P7 P4 ~+ W
  27.                 print "Unloading: ", freeLibrary(j);
    ! d1 a4 _- ?" v8 H
  28.         end;
    0 k$ ]+ P# j3 e1 q1 g5 Q
  29. end;
    & \/ L- n! o5 t; o5 F
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12
' c) s7 {3 d. A- d5 w* C: S
不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?
* t: P6 w9 h0 [4 R+ ?8 R
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。. h. J5 W! [4 w! Z* u( O
注意接口参数传递。# ?8 B9 p( D, M0 h

6 O4 ]) h& h( f* M7 P9 L/ @# C8 t感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
: X- o7 U/ Y: h不明白你为什么需要调用C++程序,正常是不需要用到的。
8 {6 W8 x5 Z; c
就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17 ' O7 i: g+ d& G
plant自带的例子里面有教你方法,你好好看看。

6 r( [( q- W, R3 `哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-13 20:38 , Processed in 1.980879 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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