今天打算给一个OC项目写个简单的Web API,顺便了解如何利用 C++\CLIL来桥接C++ 与C#,本以为用VS2017一路生成就可以了,哪知道掉了个坑,在这里记录一下:
目标: myDll.dll (c++) --> myDll_Cli.dll(c\cli) --> web api(c#) 完成图如下: 1.gif1、新建web api 、添加mydll (c++)以及 mydllCil 三个项目,这里需要注意平台选择x86;
2、配置mydllCi项目:
1.设置项目属性 ->【VC++目录】->【包含目录】和【库目录】为 myDll(c++) 目录;
2.jpg-
设置项目属性 ->【链接器】->【延迟加载的DLL】为myDll.dll(C++项目即将生成的项目)
3.jpg
3、配置webapi项目
1)设置项目属性 ->【生成事件】 -> 【后期生成事件命令行】为如下:
copy $(SolutionDir)$(ConfigurationName)\MYDLL.dll $(ProjectDir)$(OutDir)
这里就是dos命令,具体可以百度命令行 指令
4.jpg
2)添加代码 到 Global.asax 文件:
String _path = String.Concat(System.Environment.GetEnvironmentVariable("PATH"), ";", System.AppDomain.CurrentDomain.RelativeSearchPath);
System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);
5.jpg
这是大坑,为啥要添加直接给出网址:ASP.NET与非托管DLL的那些事儿
网友评论