我创建了一个C#类库,在该C#类库中引用了别的Dll。在我的应用项目中使用了我编写的这个C#类库,并且把我的C#类库的*.dll文件和其引用的Dll的文件。
应用项目在编译时通过,但是在执行时出现:无法找到入口点,如何解决?

解决方案 »

  1.   

    没有主函数吧  就是main()
      

  2.   

    不是啊,我的C++库里有主函数的,C#类库是用VS2005类库创建一步一步下来的!
    出现问题的是我的应用程序调用了C#类库中通过P/Invoke引入的C++动态库中的一个函数产生的,我估计是不是在类库引用dll时有什么规定,而我不知道是什么规定!
      

  3.   

    经过进一步调试,我直接在App中通过P/Invoke直接调用C++动态库(假设为C.dll本人自己编写的),发现仍然出现同样问题:
    无法在DLL“C.dll”中找到名为"FunctionA"的入口点!
    注:FunctionA是在c.dll中定义的函数!现在看来应该是我编写的c.dll除了问题,可到底是什么问题呢?
      

  4.   

    经查阅,有帖子说只要在C++库函数前加入extern "C"就可以了,回去试一试看哦!
      

  5.   

    C++库函数前加入extern "C",引入函数一定要与DLL里的导出函数相同
      

  6.   

    最后结论:
    (1)在制作C++Dll时,拟输出的函数需要用extern "C" __declspec(dllexport)
    (2)不能有相同名称的函数,即使函数参数不同(这在C++中成为override,但是在兼容C的Dll中不行,必须改名)
    如我要输出两个函数Open()和Open(PDWORD pError),必须改为不同名字,我最后改为Open()和OpenEx(PDWORD pError)