DLLImport uses LoadLibrary/GetProcAddress. I don't think, .lib, which is supposed to statically linked to, is in the right format for LoadLibrary/GetProcAddress to workconsider to write a wrapper dll which expose the relevant functions and is statically linked to your .lib

解决方案 »

  1.   

    搂主直接使用lib文件是不行的
    不过可以使用managed C++ wrapper将lib文件的东西倒出来,然后编译成一个dll文件.再在c#工程中引用.这样也可以不要写lib的源代码了
      

  2.   

    谢谢 saucer(思归)  和  tjq_tang(过河兵)  。  如果你们有更好的example 请告诉我。  谢谢。
      

  3.   

    saucer(思归)  和  tjq_tang(过河兵)  你们好,    你们的意思是还是要依赖于.dll 文件?  我的意思是能不能编绎进来呢?  达到不依赖的目的。
      

  4.   

    对,还是需要dll文件.manager c++只是一个手段而已.你也可以使用新建一个vc++ dll工程来达到目的,manager c++使用起来更加方便而已http://www.codeproject.com/csharp/dyninvok.asp
    有部分信息可以参考
      

  5.   

    谢谢你.tjq_tang(过河兵)  这些早看过了。  有没有编绎进static lib 的方法,这是我关心的。我也一直在找方法。  再次thanks
      

  6.   

    确实这个工程不能省去的。建议你还是编译出dll.不管是mfc,atl,manager c++的dll
    然后在引用吧,没有直接的方法。这是由.net与lib的本质决定了必须这样做
      

  7.   

    不见得吧?我想我会找到方法的。或者把c++的代码转为c#的。  或者整个class转过去。 当然最好是staic lib 这种方式,是吧。   不过还是很感谢你。 关于   把c++的代码转为c#的。  或者整个class转过去  这种方式你有何高见?
      

  8.   

    如果该class不复杂,当然可以考虑.
    反之你有源代码,完全可以建立一个dll工程或者atl工程.引用起来不是更方便??
      

  9.   

    我有源代码。  因为某种需要吧,所以想使用static lib的方式编绎进c# 工程。  如果是dll的方式,实现起来当然不难,但能像vc 6 ++ 那样方便引用class吗?  callback 与function 都是要extern static 申明就可以用的。这我也知道也做过。1. 同时我也参考了:  microsoft.public.dotnet.csharp  上的东东,但也没有找到答案。
    2. 我也反编绎了人家的dotnet 平台的dll文件,当然人家已经做了反反编绎。但我还是觉得应该有方法的,dotnet应该具有相当灵活性。我现在还是相信能行的。所以我要继续找答案。  谢谢你. *_*
      

  10.   

    your .lib is unmanaged code, how can you compile into a managed assembly???
      

  11.   

    saucer(思归) 兄弟说的对.*_*  但世人总是明知不可为而为之.