<DIV>Hi,</DIV>
<DIV>My problem&nbsp;was Solved!</DIV>
<DIV>Thanks to everyone!&nbsp;</DIV>
<DIV>Special thanks Clarke Brunt!</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am use omniORB4.0.7 on win2000+vc7.1,</DIV>
<DIV>The problem isn't Cause by use&nbsp;sequence&lt;struct&gt; ,and it is caused by project setting lib file&nbsp;and runtime library mode!</DIV>
<DIV>The project setting choose "Multithreaded DLL(release build)" or "Debug Multithreaded DLL&nbsp;(debug build)". This is OK.</DIV>
<DIV>My application is work fine now!</DIV>
<DIV>&nbsp;</DIV>
<DIV>Application code :</DIV>
<DIV>=====================================</DIV>
<DIV>&nbsp;</DIV>
<DIV>//----------IDL---------<BR>struct NetDataItem<BR>{<BR>&nbsp; long id;<BR>&nbsp; string name;<BR>};<BR>typedef sequence&lt;NetDataItem&gt; DataArray; <BR>typedef sequence&lt;long&gt; DataLongArray;</DIV>
<DIV><BR>interface QDataSeq<BR>{<BR>&nbsp; DataArray QueryDatas(); <BR>&nbsp; DataLongArray QueryLongData(); <BR>};<BR><BR>//---------server code--------------</DIV>
<DIV><BR>// return&nbsp; struct data Sequence<BR>DataArray* QDataSeq_i::QueryDatas(){<BR>&nbsp; int cnt =100;<BR>&nbsp; DataArray_var datas = new DataArray((CORBA::Long)cnt);<BR>&nbsp; datas-&gt;length(cnt);<BR>&nbsp; for (int i =0;i&lt; cnt; ++i)<BR>&nbsp; {<BR>&nbsp; &nbsp;datas[i].id = (CORBA::Long)(i+1);<BR>&nbsp; &nbsp;datas[i].name = CORBA::string_dup("aaaa"); //&nbsp;<BR>&nbsp; }<BR>&nbsp; std::cout &lt;&lt; "OK" &lt;&lt; endl;</DIV>
<DIV><BR>&nbsp;&nbsp;return datas._retn();<BR>}</DIV>
<DIV><BR>// return long Sequence<BR>DataArray* QDataSeq_i::QueryLongData(){<BR>&nbsp; int cnt =100;<BR>&nbsp; DataLongArray_var datas = new DataLongArray((CORBA::Long)cnt);<BR>&nbsp; datas-&gt;length(cnt);<BR>&nbsp; for (int i =0;i&lt; cnt; ++i)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp; datas[i] = (CORBA::Long)(i+1);<BR>&nbsp;&nbsp;}<BR>&nbsp; std::cout &lt;&lt; "OK" &lt;&lt; endl;</DIV>
<DIV><BR>&nbsp; return datas._retn();</DIV>
<DIV><BR>}<BR></DIV>
<DIV><BR>//-----------client code-----------------------</DIV>
<DIV>&nbsp;</DIV>
<DIV>//query struct data Sequence , use _var<BR>void queryStructSeqData(QDataSeq_ptr e)<BR>{<BR> DataArray_var dest = e-&gt;QuearyDatas();<BR> int len = pdest-&gt;length();<BR> std::cerr &lt;&lt; "query sequence size &pound;&ordm;" &lt;&lt; len &lt;&lt; endl;</DIV>
<DIV><BR>&nbsp;//do something...</DIV>
<DIV><BR>}<BR><BR><BR>//query long Sequence. It is work fine and not have memory leak. <BR>void queryLongSeqData(QDataSeq_ptr e)<BR>{<BR> DataArray_var dest = e-&gt;QueryLongData();<BR> int len = dest-&gt;length();<BR> std::cerr &lt;&lt; "query sequence size is:" &lt;&lt; len &lt;&lt; endl;</DIV>
<DIV><BR>&nbsp;//do something...</DIV>
<DIV><BR>}</DIV>
<DIV>&nbsp;</DIV>
<DIV>//-----------project setting--------------</DIV>
<DIV>debug mode add The following Libraries to "Additional Dependencies":<BR>omniORB407_rtd.lib<BR>omnithread32_rtd.lib<BR>omniDynamic407_rtd.lib<BR>ws2_32.lib<BR>mswsock.lib<BR>odbc32.lib<BR>odbccp32.lib</DIV>
<DIV>&nbsp;</DIV>
<DIV>Run-time library:Debug Multithreaded DLL&nbsp;</DIV>
<DIV><BR>----------------<BR>release mode add The following Libraries to "Additional Dependencies":<BR>omniORB407_rt.lib<BR>omnithread32_rt.lib<BR>omniDynamic407_rt.lib<BR>ws2_32.lib<BR>mswsock.lib<BR>odbc32.lib<BR>odbccp32.lib<BR></DIV>
<DIV>Run-time library:Multithreaded DLL&nbsp;</DIV>
<DIV><BR>====================================<BR></DIV>
<DIV>Thanks again to everyone!</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV >&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px">
<HR color=#a0c6e5 SIZE=1>
<BR>-----原始邮件-----<BR>发件人:"Clarke Brunt" <CLARKE.BRUNT@TRAFFICMASTER.CO.UK><BR>发送时间:2006-10-18 00:33:38<BR>收件人:"" <OMNIORB-LIST@OMNIORB-SUPPORT.COM><BR>抄送:(无)<BR>主题:Re: [omniORB] Fw: (by abcluo@163.com)use sequ ence problem ?<BR><BR><BR><PRE style="WIDTH: 100%; WORD-WRAP: break-word">I still mainly use VC6 myself, so can't be sure option options in 7.



In VC6, under Project Settings, C/C++, Code Generation, Use run-time

library, you need to choose Multithreaded DLL (or Debug Multithreaded

DLL for debug build), and not either of the single threaded options, or

the ones which don't mention DLL (statically linked). I would guess that

VC7 has similar options?



-- 

Clarke Brunt, Principal Software Engineer, Trafficmaster





This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.



_______________________________________________

omniORB-list mailing list

omniORB-list@omniorb-support.com

<A href="http://www.omniorb-support.com/mailman/listinfo/omniorb-list" target=_new>http://www.omniorb-support.com/mailman/listinfo/omniorb-list</A>

</PRE><!-- CoreMail Version 3.1.0 Copyright (c) 2002-2006 www.mailtech.cn --></BLOCKQUOTE><br><!-- footer --><br><br><br><br><br><div style="border-bottom:1px solid #999"></div><br>

        <font color="black" style="font-size:14.8px">3G 时 代 来 临 了,坚 决 对 传 统 邮 箱 说 不 !</font>
        <br>
         <a href="http://www.126.com/" target="_blank" style="font-size:13px;line-height:160%;color:blue">新 一 代 极 速 3G 邮 箱 闪 亮 登 场 ,280 兆 网 盘 免 费 送 ! 点 击 此 处 注 册
</a>