设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6867|回复: 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
( ?) P+ a5 `5 L/ R# w* c应该不行吧,这是系统自带的语言,和C不一样

- J8 W% M% _0 Q. W1 S6 A好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56
2 y0 |3 l  S: D) X1 t7 g可以调用C++。

' f! m3 x8 z8 g( T" F# c6 c请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is
    : N# T! Y# T# h9 _- q
  2.         r:real; file:string;/ K# |4 [2 L3 j; W( l% Q: i
  3. do' \; S: j, A2 b2 k
  4.         openConsole;
    * g" B8 \' s) A
  5. ; o- S6 @. j( ?7 l& e( [. I% @9 o
  6.         /*
    ( h1 l' V3 V% C1 {8 j8 ~6 A( R
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",
    + Z& S' [! [/ C) `
  8.                                    when is64BitApplication then 64 else 32,
    * `3 L9 m/ r6 ^1 a
  9.                                    "bit.dll");' S3 b+ D7 Y9 m6 R  T: Q' g
  10.                            */' T# A# k( a, r3 M
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";
    , B% l1 l9 _6 P+ T9 |% G
  12.         local j := loadLibrary(file);
    4 D7 ^6 n0 Z6 _6 v$ M! j6 Q5 e
  13. & W3 D! B# }6 a3 K- c% T& O
  14.         if j > 0 then$ _/ j4 D7 ^- c6 i1 q5 K8 t
  15.                 print getLoadedLibrary(j)," is loaded.";
    ) D1 E: w4 R! h6 W3 l+ Y" y
  16. % R% U3 L3 h: L1 q* X( J( q
  17.                 r := callLibrary(j, "calcSin", PI/6);) n0 N* d1 r; D( C
  18.                 promptmessage(to_str("sin(PI/6) = ", r));0 X+ T! a! n4 }
  19.                
    ( a) B" m. B! K1 s
  20.                 local str:string;
    - J6 u* ?5 _  @; c4 Y8 c
  21.                 str := "I'm OK!";
    8 _* c7 d$ G2 X
  22.                 str := callLibrary(j,"resetStr",str);
    7 E- n+ T% Q3 G- N+ x  o
  23.                 promptmessage(str);
    6 `8 @) V0 s1 E' Z) v
  24.                
    ; B; t; o! ]6 S( [# F# A
  25.                 callLibrary(j, "listAccess", Tablefile);, S: u% V6 ^4 O1 b1 U2 _; }7 S
  26.                 2 I, x! a" `# Y8 m
  27.                 print "Unloading: ", freeLibrary(j);
    + e2 g! K- Q5 b% k# H6 F, E
  28.         end;
    9 z  t+ N! H8 o2 q, _
  29. end;
    / \' d. y, `9 `" [
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12
. h& C; y( ]! B
不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?
$ I% _+ ]' y4 Y8 c8 _3 B2 X8 ]
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。- k4 y" g) b& w4 j
注意接口参数传递。0 [7 z. n* T0 |+ ~5 {- s' b

2 T7 N" I. z+ }1 d2 ?感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
( p. x; W6 N2 ^3 k: z不明白你为什么需要调用C++程序,正常是不需要用到的。

7 G3 A" V" `& {! ]就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17
9 g6 O( d9 k; N/ gplant自带的例子里面有教你方法,你好好看看。

4 F6 v) H* ], }1 ~# b9 E2 k哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-5 22:16 , Processed in 0.019451 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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