这个问题似乎与之前的问题重复.我已阅读了一系列帖子,但对我的情况并不完全清楚.
我有一个使用momentics IDE创建的c ++库.我必须能够将这个库用于ac #project.
在交给我之前,有人一直在研究这个项目.目前,有2层可以实现这一目标.首先,c ++项目包括带有c ++包装器的完整库.该项目创建一个dll作为输出.然后将这个c ++ dll输入到ac #project,该项目具有对c ++ dll的dllimport调用.这个c#项目再次创建一个dll.最后,为了在c#应用程序中使用库,我必须包含对这两个dll的引用.
这是让它运作的正确方法吗?我想可能应该有一种简化过程的方法.
有人可以帮我解决这个问题吗?
鉴于您使用的是C++库,我假设它利用了类似C++的语义,而不仅仅是暴露程序.如果是这种情况,那么通常通过手动创建的托管C++互操作库来完成此操作.
基本上,您在Visual Studio中创建托管C++库,引用现有的C++库,并围绕现有C++类创建托管包装器.然后,在C#项目中引用此(托管)C++程序集,并在C#程序集中包含原始(非托管)C++库,就像放置在构建目录中的文件一样.
这是必需的,因为无法通过P/Invoke(DllImport)调用引用C++类之类的东西.
如果你的基础库是只是一系列的功能,那么你可以直接在C#项目通过P引用/调用功能.
无论哪种方式,上面提到的所有库(第一个,非托管C++库,托管C++程序集和C#项目,或者第二个,非托管C++库和C#项目)都必须包含在任何项目中引用它们.您无法将非托管库静态链接到托管程序集.
| 归档时间: |
|
| 查看次数: |
6512 次 |
| 最近记录: |