1:写DLL的时候,由于debug和release默认情况下生成的名字一样,所以,如果要区分开来,除了在属性里进行设置,还要在def里面,注销该语句 ;LIBRARY "JxDll",这样设置的内容才会生效!
修改DLL路径: 右键工程名-->属性-->配置属性-->常规, 右边有一个 "常规目录",修改为你要输出的DLL路径,eg: ..\OutPut修改DLL名称: 右键工程名-->属性-->链接器-->常规, 右边有一个"输出文件",默认为 $(OutDir)\$(ProjectName).exe,修改 '斜杠后面的内容即可' eg :$(OutDir)\JxDllD.dll
修改LIB路径和名称:右键工程名-->属性-->链接器-->高级,右边有一个导入库,修改为你要输出的LIB路径即可, eg ../Lib/JxDllD.lib.如果只修改DLL的路径,不修改LIB的路径,则LIB默认和DLL一样的;VS2005有时候不能完全编译,如果不行,可以试着把生成的整个文件夹都删除掉,这样往往都可以了,除非语句有问题!
2:
error C2665: 'operator new' : none of the 5 overloads can convert parameter 1 from type
2011-06-28 19:33
You'd better check if there's any annoucement like:
#define new DEBUG_NEW
before you include the STL header.
If YES, move to be after your STL announcement.
DLL应用STL的时候,要注意放的位置,应该放在
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
的前面,这样就不会报错了!
在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated 对于这些问题,VC2005建议使用这些函数的更高级的安全版本,即在这些函数名后面加了一个_s的函数。这些安全版本函数使用起来更有效,也便于识别,如:strcpy_s,calloc_s等。
当然,如果执意使用老版本、非安全版本函数,可以使用_CRT_SECURE_NO_DEPRECATE标记来忽略这些警告问题。办法是在编译选项 C/C++ | Preprocessor | Preprocessor Definitions中,增加_CRT_SECURE_NO_DEPRECATE标记即可。或在程序开头添加
#pragma warning(disable:4996) //全部关掉
#pragma warning(once:4996) //仅显示一个
3: vs2005动态库(MFC规则DLL)
引用C#写的webservice接口时,步骤为:右键工程属性--->添加WEB引用--->在URL里输入接口地址,然后点击'添加引用',就OK了!
如果发生错误'SPROXY 错误 SDL1002...',则:右键工程属性--->配置属性-->常规,在项目默认值里,有一个'公共语言运行库支持', 默认是不开启的,即'无公共语言运行库支持'',选择开启即'公共语言运行库支持'(clr)' ; 还有,如果不用要宽字符,则'字符集' 选择 未设置'
4:MFC无论引用c#还是java写的webservice接口,方法都是一样的, 只是在调用的时候,变量类型的声明有区别而已.
JAVA :
WebRead::JaxRpcGetInfoService web1 ;
System::String^ s1 = gcnew System::String(strSearch);
System::String^ s2 = gcnew System::String(strServer);
System::String^ s3 = web1.getMessage(s1,s2);