VC新建动态链接库,换个函数又出错,求助妖哥

liu_huasheng 2012-11-01 11:00:21
新建一个newdll工程,头文件newdll.h中声明:
extern "C" _declspec(dllexport) string _stdcall transfer2Pin(string const & input);

newdll.cpp中定义:
#include<string.h>
#include"newdll.h"
string __stdcall transfer2Pin(string const & input)//汉字转换成拼音
{
string result;
......
return result;
}
原来的int sum(int a,int b)函数编译没有问题,为什么换个函数就编译不通了?
error C2143: syntax error : missing ';' before '__stdcall'
error C2143: syntax error : missing ')' before 'const'
error C2501: 'transfer2Pin' : missing storage-class or type specifiers
error C2086: 'transfer2Pin' : redefinition
...
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-11-01
  • 打赏
  • 举报
回复
头文件中包含了string类的头文件木有?

#include <string>
using namespace std;
liu_huasheng 2012-11-01
  • 打赏
  • 举报
回复
确实用C++的封装类写dll容易出现问题,但是用基本类型写好不适应,哎,恨自己底子薄[Quote=引用 1 楼 的回复:]

string 问题
在dll里,定义函数时,尽量使用基本类型,这样做的dll文件,方便vc和bcb等其他语言中正常调用
[/Quote]
liu_huasheng 2012-11-01
  • 打赏
  • 举报
回复
不是啊妖哥,我贴出来的时候手打少打的,头文件声明中用的是__stdcall,
extern "C" _declspec(dllexport) string __stdcall transfer2Pin(string const & input);
我检查了,还是上面那些错误
[Quote=引用 2 楼 的回复:]

楼主是典型的马虎。你的transfer2Pin声明的时候是_stdcall,定义的时候却用__stdcall,自己检查区别在哪里?
[/Quote]
ccrun.com 2012-11-01
  • 打赏
  • 举报
回复
楼主是典型的马虎。你的transfer2Pin声明的时候是_stdcall,定义的时候却用__stdcall,自己检查区别在哪里?
bigfog 2012-11-01
  • 打赏
  • 举报
回复
string 问题
在dll里,定义函数时,尽量使用基本类型,这样做的dll文件,方便vc和bcb等其他语言中正常调用
liu_huasheng 2012-11-01
  • 打赏
  • 举报
回复
谢谢妖哥
ccrun.com 2012-11-01
  • 打赏
  • 举报
回复
// 将Edit中的值赋给string
string str = Edit1->Text.c_str();
// 将string赋给Edit
string str("abc");
Edit1->Text = str.c_str();
liu_huasheng 2012-11-01
  • 打赏
  • 举报
回复
嗯,已经解决了。
妖哥,我还想请教下,BCB中,如果想在EDIT控件中输入输出string类型(不是AnsiString)
应该怎么办?
比如说 string a;
a=Edit1->Text; 怎么实现呢?[Quote=引用 5 楼 的回复:]

头文件中包含了string类的头文件木有?

C/C++ code
#include <string>
using namespace std;
[/Quote]

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧