|
本帖最后由 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++ 代码,与诸君共享,以免诸君再多走弯路:
- HRESULT hr;
- ICLRMetaHost *pMetaHost = NULL;
- ICLRRuntimeInfo *pRuntimeInfo = NULL;
- ICLRRuntimeHost *pClrRuntimeHost = NULL;
- // build runtime
- hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&pMetaHost));
- hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&pRuntimeInfo));
- hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost,
- IID_PPV_ARGS(&pClrRuntimeHost));
- // start runtime
- hr = pClrRuntimeHost->Start();
- // execute managed assembly
- DWORD pReturnValue;
- hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(
- L"E:\\FrameworkInjection\\_build\\debug\\anycpu\\InjectExample.dll",
- L"InjectExample.Program",
- L"EntryPoint",
- L"hello .net runtime",
- &pReturnValue);
- // free resources
- pMetaHost->Release();
- pRuntimeInfo->Release();
- pClrRuntimeHost->Release();
复制代码
有需要的小伙伴,拿去,不谢~
以上代码是基于 Creo 4.0 Creo Toolkit C 接口开发的dll调试通过~
大家谁便看,不需要回帖可见~
基于以上方法,就可以实现 toolkit dll -> C# dll -> toolkit dll api (加载后的另一个toolkit dll export 的 api,已试验通过)
|
评分
-
查看全部评分
|