fflush(stdout)的用途是什么?
已经装上了,那你这个就能运行了,否则就只有你把这个缺少的文件放exe同目录里面用了@@個依賴有點}}雜,c++的{{觕##礵lll,你換個方式吧。比如webservice那NN調用。回复 2# w_anthonyVS2008直接在afx.h里面检测这个兼容性,那就不好办了,如果定义了_AFXDLL就会和“在共享DLL里面使用MFC一样了”,当然也可以把afx.h里面的代码拷到其他.h里面去掉兼容性检测再包含这个.h,并主动定义__AFX_H__阻止包含原afx.h,但这毕竟不是正道,也不推荐。
转载:http://dorothyw13.blog.163.com/blog/static/169778237201239113357180/
众所周知,c#编译器编译代码为托管代码,可以使用vs自带的返编译工具查看代码结构,而vc不但能够编译非托管代码,使得不能被反编译,它又能编译托管代码,不过新建工程的时候默认的是非托管代码。这样一来在vc中调用c#编译出来的dll文件就会产生一些问题:
fatal error C1190: 托管目标代码需要“/clr”选项
可以更改环境配置进行解决:属性->配置属性->常规->公共语言运行时支持,改为:公共语言运行时支持(/clr),这样编译器就会产生托管代码,因为产生的最终文件不是二进制文件,所以生成的exe文件要比非托管的大很多。
vs2010添加dll文件也很方便,与c#环境的类似,只不过vs2010的添加要在属性->框架和引用->添加新引用。还有要注意的地方是.h文件不能定义为托管,因此在.h文件内部定于诸如PTZControl::PTZControl^ pcontrol;的变量会出现错误:
error C3265: 无法声明托管“pcontrol”(在非托管“CmyFfplayDlg”中)
1> 不能声明全局或静态变量,也不能声明引用 gc 堆中对象的本机类型成员
查了很多资料,终于有了解决办法:将上述变量定义为:gcroot<PTZControl::PTZControl^> pcontrol;解决了托管代码不能定义全局变量以及静态变量问题。
实例化C#的类不要使用c++中的方式,使用“^”号代替间接寻址指针操作符“*”。而用gcnew代替new。
开发期间如果用到字符串传递参数,比如vc的CString 向C#的string传递,直接传递是不能传递成功的,需要进行转换,我使用这样的:
System::String^ m_SerIp = gcnew System::String(m_ServerIp);//m_Server 为CString类型
System::String^ m_CliIp = gcnew System::String(m_ClientIp);
转载:http://blog.csdn.net/lxp116/article/details/8363644