C++通过DLL调用C#代码

http://www.blogjava.net/zhaoguo543166/articles/372356.html



http://www.cnblogs.com/mengdd/p/4276801.html

http://blog.csdn.net/u011348467/article/details/51897213


http://blog.csdn.net/kingjxust/article/details/9142757




具体的实现步骤如下:

http://blog.csdn.net/morewindows/article/details/8678431

一、创建C# DLL,需要指定应用类型为“类库”,代码:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using bpac;

namespace ClassLibrary1
{

    public class Class1
    {
        
        private const string TEMPLATE_DIRECTORY = @"C:\Program Files\Brother bPAC3 SDK\Templates\";	// Template file path
        private const string TEMPLATE_SIMPLE = "nameplate1.lbx";	// Template file name
       
        public string name1 { get; set; }
        public string name2 { get; set; }
        public string name3 { get; set; }
        public string name4 { get; set; }
        public string name5 { get; set; }
        
        public void cppPrint()
        {
            string templatePath = TEMPLATE_DIRECTORY;
            templatePath += TEMPLATE_SIMPLE;

            Console.WriteLine("调用的C#的打印方法,模板文件是: " + templatePath);
            bpac.DocumentClass doc = new bpac.DocumentClass();
            if (doc.Open(templatePath) != false)
            {
                Console.WriteLine("调用的C#的打印方法,参数是: " + name1 + "--" + name2);
                doc.GetObject("objCompany").Text = name1;
                doc.GetObject("objName").Text = name2;

                // doc.SetMediaById(doc.Printer.GetMediaId(), true);
                doc.StartPrint("", PrintOptionConstants.bpoDefault);
                doc.PrintOut(1, PrintOptionConstants.bpoDefault);
                doc.EndPrint();
                doc.Close();
            }
            else
            {
                Console.WriteLine("调用的C#的打印方法,打开模板文件失败: " + doc.ErrorCode);
                // MessageBox.Show("Open() Error: " + doc.ErrorCode);
            }
        }

    }
}

二、C++客户程序,是个控制台应用,代码:


// ConsoleApplication3.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
 
#using "..\\x64\\Debug\\ClassLibrary1.dll"
 
using namespace ClassLibrary1;

int _tmain(int argc, _TCHAR* argv[])
{
	Class1 ^c = gcnew Class1();

	c->name1 = "AAAA";
	c->name2 = "BBB";
	c->name3 = "CCCC";
	c->name4 = "DDD";
	c->name5 = "EEEE";
	//c->cppPrint();
	printf("%s\n", c->name1);

	return 0;
}

三、这里有几点要记住

1. 使用#using引用C# DLL,而不是#include

2. 别忘了using namespace CSLib

3. 使用C++/clr语法,采用正确的访问托管对象,即:使用'^',而不是星号'*'





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值