我定义的函数是:
extern "C" __declspec(dllexport) BOOL WtSys_SetCom(String Ccomm,int bps);
出错提示是:
[C++ Error] main.h(42): E2147 String cannot start a parameter declaration
[C++ Error] main.cpp(633): E2337 Only one of a set of overloaded functions can be "C"
不知道哪位仁兄碰到过这个问题吗,请帮我解决好吗,不盛感激!
如果String改成 char*会只有第二个错误!!
String作为dll 输入输出参数是不行的,需要专门的库memlib,建议都使用char *
你重载了c函数,这是不允许的。
解决方法是用void 的指针改成
extern "C" __declspec(dllexport) BOOL WtSys_SetCom(void *Ccomm,int bps);
{
String *Str;
Str=(String *)Ccomm; //一切OK
}
楼上的方法可以,但是不安全,毕竟一个void *指针之后,你必须写上注释说明要进来一个String *的指针。
呵呵,我试过这种,改成AnsiString 就没错了,在调用时只需
ansistring tmp
WtSys_SetCom(&tmp,4);
就可以传了
请用char *