设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7156|回复: 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
2 V" {6 i8 s0 q5 i) L4 @应该不行吧,这是系统自带的语言,和C不一样

" ^: e& k0 z9 C! H9 g好的,谢谢
发表于 2015-4-16 19:56:47 | 显示全部楼层
可以调用C++。
 楼主| 发表于 2015-4-17 09:01:43 | 显示全部楼层
sefule 发表于 2015-4-16 19:56
+ Y# H" D& x2 B8 v8 t# `/ l" }可以调用C++。

7 u. u, H! M% @* v请问如何调用呢?求详细过程,另外C++程序结构比较复杂,显示main函数,然后要调用几个函数,请问要放到一个Method对象里还是拆成好几个Method对象呢?
发表于 2015-4-17 19:12:24 | 显示全部楼层
  1. is
    . F4 V0 m" q* c& e! O$ _+ `3 }4 o
  2.         r:real; file:string;
    2 n+ H7 [7 i  d- i
  3. do
    4 z# F  k. R) [" d/ N3 M
  4.         openConsole;+ o* k' b; Q3 J9 Q* W; }! V4 n" M
  5. 8 n; y' N6 W0 W6 t* k9 y3 t
  6.         /*0 A1 z3 T' G% m4 t# O+ e
  7.         file := to_str(ApplicationHome, "\Plant Simulation\C-Interface\cinterf",' U' `, {0 s* t& Q7 |
  8.                                    when is64BitApplication then 64 else 32,& L; u2 K' A& q8 c- t/ q
  9.                                    "bit.dll");
    3 x: U" g6 p( ]3 ~7 O
  10.                            */
    6 m" D, e' E/ X4 |8 n, E' j0 S
  11.         file := "C:\Users\sun\Documents\Visual Studio 2010\Projects\sg64dll\x64\Debug\sg64dll.dll";5 t) P0 O" g' w+ `& a  b$ z: M
  12.         local j := loadLibrary(file);" ^0 M. G& O2 w, u/ }8 b& N

  13. $ H" N0 c1 |9 C* d! V9 X
  14.         if j > 0 then6 r: N% O! y# w; J- H0 f! {' `& N
  15.                 print getLoadedLibrary(j)," is loaded.";, h0 K5 q6 p6 i5 a

  16. * Y7 B4 i" N3 @8 b" G
  17.                 r := callLibrary(j, "calcSin", PI/6);
    # T# s) h& u! W; C& \; o; t
  18.                 promptmessage(to_str("sin(PI/6) = ", r));/ ?2 E7 ?6 ?3 o4 b1 a! d9 K- h. s
  19.                 0 b! |/ ^$ Z4 j
  20.                 local str:string;
    : x% F; w$ J# u2 {3 P% v
  21.                 str := "I'm OK!";/ M# t& O4 U0 p
  22.                 str := callLibrary(j,"resetStr",str);
    4 ~, b0 W, d2 |
  23.                 promptmessage(str);
    , _: J2 r" o+ t! x! d* P
  24.                 ; v( I+ {8 w0 r
  25.                 callLibrary(j, "listAccess", Tablefile);
    % r  W% `: g7 e/ Y
  26.                 0 p3 D+ W9 T; \/ B
  27.                 print "Unloading: ", freeLibrary(j);
    # R& x: j; v# r3 b( ?
  28.         end;
    8 {0 D) g4 g4 d
  29. end;( Y/ e1 e& V: A" E+ A
复制代码
 楼主| 发表于 2015-4-18 15:35:36 | 显示全部楼层
sefule 发表于 2015-4-17 19:12
, i: F7 T  ~1 k* @6 t+ c, a8 ~
不好意思我还是想问一下,就是在do里先输入C++程序所在的位置然后直接把C++里的程序复制到后面么?% Z" S0 Q7 E* _" J; n: t( U$ }
发表于 2015-4-18 17:49:45 | 显示全部楼层
将C++生成dll,然后引入l调用。
" y9 j2 G6 A4 R2 P+ D/ S. Q2 {注意接口参数传递。
( b# M4 x* s: H: m$ K1 P9 a6 R  g! j( b  _3 m4 L
感觉你理解有偏差,是调用c++的dll。而不是CLR似的混合编程。
发表于 2015-4-18 20:39:23 | 显示全部楼层
不明白你为什么需要调用C++程序,正常是不需要用到的。
 楼主| 发表于 2015-4-19 15:32:35 | 显示全部楼层
dongshui8558 发表于 2015-4-18 20:39
) v7 x7 \; P# C& i不明白你为什么需要调用C++程序,正常是不需要用到的。
2 g( k6 _1 N: B0 k  |* Z& ^, G: D
就是我现在手上有一个算法,然后已经有了一个C程序,我想仿真一下这个算法,如果能直接导进去就不用编simtalk语言了
发表于 2015-4-19 16:17:58 | 显示全部楼层
plant自带的例子里面有教你方法,你好好看看。
 楼主| 发表于 2015-4-23 12:52:25 | 显示全部楼层
dongshui8558 发表于 2015-4-19 16:17
& R# U. W3 f: b2 {plant自带的例子里面有教你方法,你好好看看。
+ U: e* n/ t; y
哦哦是《em-plant仿真技术教程》么?还是《plant simulation 生产系统与仿真》呢?麻烦提点一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-29 12:52 , Processed in 0.018333 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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