以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  VC做DLL时接口的CString参数如何处理[求助]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=55982)


--  作者:DMman
--  发布时间:11/25/2007 6:08:00 PM

--  VC做DLL时接口的CString参数如何处理[求助]
   用VC做了个正规MFC DLL,有个函数使用字符串 表示文件的路径 作为参数。
使用delphi调用时出现了问题。
   网上说 CString是VC特有的,用LPCTSTR 或者 Char* 代替CString, 又或者在Delphi中用PChar代替String,等等,尝试了下没有理想解决的方案。
如果接口函数使用int 或空 参数则工作正常

   制作DLL时候 我的声明基本上是这样的(__declspec(dllexport)表示的含义不是很大明白,好像这里的定义也是有讲究的)
.h文件中
extern "C"   __declspec(dllexport)  void Test(LPCTSTR  file);

cpp文件中:
extern "C" __declspec(dllexport) void Test(LPCTSTR    file)
{
  
 LPCTSTR p = file;//调用DLL参数在这里无法正常传递!
               //我想从应用程序传递过来的参数作为 字符串 使用(是文件的路径)
 CString str ;
 str.Format("%s", p);
 AfxMessageBox(str);
}

麻烦做过的 有经验的 懂原理的朋友给解释下 谢谢了!



--  作者:DMman
--  发布时间:11/25/2007 10:16:00 PM

--  
问题以解决。
VC用LPCTSTR做参数,然后再转成CString ;Delphi中用String即可。
下午倒腾了一大段没有成功,原来是自己粗心放错了文件的位置!
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
39.063ms