设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7444|回复: 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 0 x" U- m0 z0 f3 m, r
应该不行吧,这是系统自带的语言,和C不一样

; i# X0 H" l( J6 T4 c好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56
2 ?7 Z8 ]  n1 M" d+ A3 t8 b# V可以调用C++。
5 y1 N* T" Y- C" B2 j+ ~
请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is
    8 |8 D' n; `' _% w7 e) N5 z
  2.         r:real; file:string;! A4 _; D9 D" x/ r8 f9 l; s' e
  3. do0 @( }" P0 B& S& N8 O- f
  4.         openConsole;- G# H7 X' C3 q7 W: C, W

  5. . c2 l/ F2 X$ W; O, ^+ Z
  6.         /*
    4 I; `. x# h# O& `) ?( l& B4 r
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",& J/ ?: \2 u; O, r8 `
  8.                                    when is64BitApplication then 64 else 32,8 ]* t: K# }* H0 O2 B2 e
  9.                                    "bit.dll");
    - l- m/ U) s# v6 t, e, h; Y
  10.                            */
    ) K- d& l0 g- N2 E2 J
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";
    * \& E. R- u: X! m. I& W
  12.         local j := loadLibrary(file);
    ( Y. F2 g1 ^* ~5 g0 t1 e

  13. 0 M* D3 J* r1 I) x
  14.         if j > 0 then
    2 l8 n- ]" \7 Y: K- U8 ^0 X
  15.                 print getLoadedLibrary(j)," is loaded.";% ~1 M2 y  ]& V* @# G. F; f  q/ O

  16. : B' [0 _6 u' T# O  }9 d
  17.                 r := callLibrary(j, "calcSin", PI/6);
    0 l+ Z; f1 |# j8 g( S# {
  18.                 promptmessage(to_str("sin(PI/6) = ", r));9 |$ i  v4 A- ]
  19.                
    - q* n+ d9 Q* a5 ^1 `5 l& P; }3 ?
  20.                 local str:string;1 G, ?+ H* I) L$ B* o
  21.                 str := "I'm OK!";; ~1 P; E' j. O/ i5 x; d
  22.                 str := callLibrary(j,"resetStr",str);
    9 Y  C* {; K7 z2 J
  23.                 promptmessage(str);4 U& g% J0 A5 @) m! A6 Z
  24.                
    5 l6 u0 B' [% J; Q
  25.                 callLibrary(j, "listAccess", Tablefile);
    2 ~5 E. L: w8 D% R% U; @
  26.                
    & T) M1 B3 {# @4 c3 I. Y9 K2 [
  27.                 print "Unloading: ", freeLibrary(j);
    ) \* [7 C  n7 C# M
  28.         end;$ W9 Q0 m1 f; _
  29. end;
    : D. ?+ T  [4 Y! H
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12

% w& x* [0 K7 _9 p- r' Z; o, P. K不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?
6 J& ~$ ~# V7 {9 f( F
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。
8 v) p5 |) m4 F' ?: S* X" o  M注意接口参数传递。
; ~+ c1 Q3 n  b/ e2 R: ~* F; O0 j
: A2 B% _' p* x" Q感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
. \/ H- }9 D+ W不明白你为什么需要调用C++程序,正常是不需要用到的。

; P, ]2 [+ q5 q8 a9 k: b; n就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17
2 E) f% @2 z* y: k2 `plant自带的例子里面有教你方法,你好好看看。

5 b; B, y" X( d3 i1 I哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 03:11 , Processed in 0.016885 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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