找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11618|回复: 9

[原创] Creo Toolkit (C/C++) 调用C# dll 库函数的方法

[复制链接]

5

主题

55

回帖

2

威望

助工

积分
75
QQ
发表于 2019-11-16 21:56 | 显示全部楼层 |阅读模式
本帖最后由 chencs 于 2019-11-17 07:23 编辑

由于近日捯饬 Creo 与 Teamcenter 集成的事宜,自己对 Java 不熟,无法用 Java 对 TC 进行开发,用C++开发TC又存在开发效率问题,遂研究如何用 Creo Toolkit C/C++ 二次开发接口调用 Teamcenter 的 C# 接口进行开发。

然鹅,理想很丰满,现实很骨感。Creo Toolkit C/C++ 开发时并不支持 clr!,使用 COM 接口又得注册,非常繁琐。遂一次又一次的测试,研究。

苦心人,天不负啊!(还是谷歌大法好)

终于让我在谷歌上搜索到了微软的 CLRCreateInstance API 。

经过几番折腾,捯饬出了以下部分 C/C++ 代码,与诸君共享,以免诸君再多走弯路:
  1. HRESULT hr;
  2.     ICLRMetaHost *pMetaHost = NULL;
  3.     ICLRRuntimeInfo *pRuntimeInfo = NULL;
  4.     ICLRRuntimeHost *pClrRuntimeHost = NULL;

  5.     // build runtime
  6.     hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&pMetaHost));
  7.     hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&pRuntimeInfo));
  8.     hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost,
  9.         IID_PPV_ARGS(&pClrRuntimeHost));

  10.     // start runtime
  11.     hr = pClrRuntimeHost->Start();

  12.     // execute managed assembly
  13.     DWORD pReturnValue;
  14.     hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(
  15.         L"E:\\FrameworkInjection\\_build\\debug\\anycpu\\InjectExample.dll",
  16.         L"InjectExample.Program",
  17.         L"EntryPoint",
  18.         L"hello .net runtime",
  19.         &pReturnValue);

  20.     // free resources
  21.     pMetaHost->Release();
  22.     pRuntimeInfo->Release();
  23.     pClrRuntimeHost->Release();
复制代码


有需要的小伙伴,拿去,不谢~

以上代码是基于 Creo 4.0 Creo Toolkit C 接口开发的dll调试通过~

大家谁便看,不需要回帖可见~

基于以上方法,就可以实现 toolkit dll -> C# dll -> toolkit dll api (加载后的另一个toolkit dll export 的 api,已试验通过)

评分

参与人数 1威望 +2 金钱 +10 收起 理由
野火 + 2 + 10 原创内容

查看全部评分

共同学习:https://www.yuque.com/creo
二次开发QQ:749997926

0

主题

43

回帖

0

威望

助工

积分
53
发表于 2019-11-17 00:12 | 显示全部楼层
完全看不懂,膜拜会编程的。
回复

使用道具 举报

1272

主题

4万

回帖

900

威望

管理员

积分
47433

社区建设勋章优秀斑竹勋章原创先锋勋章热心助人勋章宣传大使勋章斑竹勋章

发表于 2019-11-17 17:13 | 显示全部楼层
谢谢朋友分享成功的经验
回复

使用道具 举报

6

主题

638

回帖

32

威望

高工

积分
900
发表于 2019-11-17 23:07 | 显示全部楼层
确实看看不懂代码。。。。。。。。
回复

使用道具 举报

33

主题

3175

回帖

75

威望

教授

积分
3589

希望之星勋章

发表于 2019-11-18 08:55 | 显示全部楼层
感谢分享!
回复

使用道具 举报

4

主题

69

回帖

3

威望

助工

积分
126
发表于 2019-12-10 12:36 | 显示全部楼层
我表示完全看不懂!!
回复

使用道具 举报

3

主题

28

回帖

0

威望

助工

积分
199
发表于 2019-12-12 14:30 | 显示全部楼层
很好用,建议用txt文件传递信息,这样只要mfc单方面的引用c#类库就好了。
回复

使用道具 举报

5

主题

55

回帖

2

威望

助工

积分
75
QQ
 楼主| 发表于 2019-12-13 16:34 | 显示全部楼层
BILLYKANE 发表于 2019-12-12 14:30
很好用,建议用txt文件传递信息,这样只要mfc单方面的引用c#类库就好了。

txt、共享内存都可以,可以根据实际情况来选择。不建议使用mfc,qt这么好的库不考虑一下吗
共同学习:https://www.yuque.com/creo
二次开发QQ:749997926
回复

使用道具 举报

3

主题

140

回帖

0

威望

助工

积分
171
发表于 2019-12-19 16:20 | 显示全部楼层
请问toolkit license能够破解吗?不然无法调试和解锁,请赐教
回复

使用道具 举报

0

主题

223

回帖

0

威望

工程师

积分
240
发表于 2019-12-20 20:09 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请发邮件联系我们,本站将立即改正或删除。

手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号|站长QQ28016688

GMT+8, 2024-11-21 20:47 , Processed in 0.158291 second(s), 23 queries .

快速回复 返回顶部 返回列表