日期:2014-05-17  浏览次数:21062 次

托管c++调用C#遇到的难题
c++/cli源码



using std::string;
using namespace System;
using namespace System::Drawing;
using namespace Word2Image;


int main(array<System::String ^> ^args)
{
Program^  pProgram=gcnew Program();

Single^ pFloat= gcnew Single(0.0f);

pProgram->ConvertWordToImage("F:\\111.doc","","",0,0,nullptr,pFloat);
// pProgram->ConvertWordToImage("F:\\111.doc","","",0,0,null,0);

return 0;
}


namespace Word2Image
{
   public class Program
    {
        /// <summary>
        /// 将Word文档转换为图片的方法(该方法基于第三方DLL),你可以像这样调用该方法:
        /// ConvertPDF2Image("F:\\PdfFile.doc", "F:\\", "ImageFile", 1, 20, ImageFormat.Png, 256);
        /// </summary>
        /// <param name="pdfInputPath">Word文件路径</param>
        /// <param name="imageOutputPath">图片输出路径,如果为空,默认值为Word所在路径</param>
        /// <param name="imageName">图片的名字,不需要带扩展名,如果为空,默认值为Word的名称</param>
        /// <param name="startPageNum">从PDF文档的第几页开始转换,如果为0,默认值为1</param>
        /// <param name="endPageNum">从PDF文档的第几页开始停止转换,如果为0,默认值为Word总页数</param>
        /// <param name="imageFormat">设置所需图片格式,如果为null,默认格式为PNG</param>
        /// <param name="resolution">设置图片的像素,数字越大越清晰,如果为0,默认值为128,建议最大值不要超过1024</param>
        public  void ConvertWordToImage(string wordInputPath, string imageOutputPath,
            string imageName, int startPageNum, int endPageNum, ImageFormat imageFormat, float resolution)
   


错误提示:


\clrWord2Image.cpp(11) : error C2039: “Drawing”: 不是“System”的成员
2>.\clrWord2Image.cpp(11) : error C2871: “Drawing”: 具有该名称的命名空间不存在
2>.\clrWord2Image.cpp(149) : error C3624: “System::Drawing::Imaging::ImageFormat”: 使用此类型需要引用 程序集“System.Drawing”
2>.\clrWord2Image.cpp(149) : error C2664: “Word2Image::Program::ConvertWordToImage”: 不能将参数 7 从“System::Single ^”转换为“float”




------解决方案--------------------
在C++项目属性里,找到第一项“通用属性”-->“框架和引用”,在里面添加.NET程序集引用,它这个添加不像C#那么方便,得打开属性页才行。