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语法,采用正确的访问托管对象,即:使用'^',而不是星号'*'。