请问VC中写的Dll用于VB中调用,其中要传递一个字符串,应该怎么写???? 用地址传递的方法,试一下VB里的AddressOf str,得到str的地址,然后把这个地址传给MyFun函数。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 freeghost(星子)谢谢你的回复。但我是要问在VC中怎么写MyFun(),谢谢。 我知道要用到什么 BSTR ,LPCTSTR之类的,但具体怎么用法不太清楚,还请高手指点一二。 你在VB中定义这个dll函数的时候用ByRef型的,在VC中用LPSTR或char *这两个是相同的,如果用LPCTSTR我想不行吧,但也不敢确定我也没试过。 freeghost(星子):理论上我也知道一点点,但在实际操作中不行:大家看我写的这个有没有问题:#include <comutil.h>extern "C" BSTR _stdcall MyFun(BSTR str){ CString str; str=_com_util::ConvertBSTRToString(str); str+="Hello,World!"; return _com_util::ConvertStringToBSTR(str);}这样写的错误很多啊,请问应该怎么改? 程序是这样写,编译时会出现:extern "C" BSTR _stdcall MyFun(BSTR str){ CString cstr; cstr=_com_util::ConvertBSTRToString(str); cstr+="Hello,World!"; return _com_util::ConvertStringToBSTR(cstr);}Linking... Creating library Debug/dll.lib and object Debug/dll.expdll.obj : error LNK2001: unresolved external symbol "unsigned short * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPAGPBD@Z)dll.obj : error LNK2001: unresolved external symbol "char * __stdcall _com_util::ConvertBSTRToString(unsigned short *)" (?ConvertBSTRToString@_com_util@@YGPADPAG@Z)Debug/dll.dll : fatal error LNK1120: 2 unresolved externalsError executing link.exe.dll.dll - 3 error(s), 0 warning(s)这些是什么错误? 你试一下把前边的extern "C" 去掉然后再试一下呢? 请在函数开头加USES_CONVERSION;extern "C" BSTR _stdcall MyFun(BSTR str){ USES_CONVERSION; LPTSTR x = OLE2T(str);} 你如此声明函数:TYPE_declspec(dllexport) MyFun(BSTR str){ ... ...}其中,大写的TYPE表示是函数的类型,可以是各种类型的,如:void,int 等! 去掉对_com_util::ConvertStringToBSTR函数的引用,改用#include <comdef.h>extern "C" BSTR _stdcall MyFun(BSTR str){ _bstr_t bstrTemp(str, true); bstrTemp += "hello, world"; return SysAllocString(bstrTemp);} 求vc2005环境的数据库编程demo! 请教《智能拼图游戏》搜索算法引起内存不足的问题。 我想在DC上画3张bitmap,在显示的时候,把这个三张bitmap都作为一张bitmap帖在DC上去(以解决屏幕刷新时,屏幕抖动的问题)怎么解决,能给 指教 菜鸟问题 为什么可以连接但recv确接收不到消息啊,请问怎样修改? 请问:怎样在SDI一启动就调入Windows资源管理器 请问switch后面的表达式可以是字符串变量吗? "unresolved external symbol ....." 单目视觉位姿测量 一闪一闪亮晶晶?! CListCtrl很简单的问题。。送分。。
#include <comutil.h>
extern "C" BSTR _stdcall MyFun(BSTR str)
{
CString str;
str=_com_util::ConvertBSTRToString(str);
str+="Hello,World!";
return _com_util::ConvertStringToBSTR(str);
}这样写的错误很多啊,请问应该怎么改?
extern "C" BSTR _stdcall MyFun(BSTR str)
{
CString cstr;
cstr=_com_util::ConvertBSTRToString(str);
cstr+="Hello,World!";
return _com_util::ConvertStringToBSTR(cstr);
}Linking...
Creating library Debug/dll.lib and object Debug/dll.exp
dll.obj : error LNK2001: unresolved external symbol "unsigned short * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPAGPBD@Z)
dll.obj : error LNK2001: unresolved external symbol "char * __stdcall _com_util::ConvertBSTRToString(unsigned short *)" (?ConvertBSTRToString@_com_util@@YGPADPAG@Z)
Debug/dll.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.dll.dll - 3 error(s), 0 warning(s)这些是什么错误?
USES_CONVERSION;extern "C" BSTR _stdcall MyFun(BSTR str)
{
USES_CONVERSION;
LPTSTR x = OLE2T(str);
}
TYPE_declspec(dllexport) MyFun(BSTR str)
{
...
...
}
其中,大写的TYPE表示是函数的类型,可以是各种类型的,如:void,int 等!
{
_bstr_t bstrTemp(str, true);
bstrTemp += "hello, world";
return SysAllocString(bstrTemp);
}