DLL 互操作/有趣的错误
Posted
技术标签:
【中文标题】DLL 互操作/有趣的错误【英文标题】:DLL interop / interesting error 【发布时间】:2009-05-22 03:05:35 【问题描述】:char ARRAY[1024]; // <-- global
以下代码有效
myFunctionInDll("some string"); // everything ok
下面的代码不起作用
myFunctionInDll(ARRAY); // after compilation the entry point of DLL cannot be found
因此,总而言之,如果我将“静态字符串”传递给我的 dll 中的函数,则 dll 可以完美地编译和加载。但是,如果我填充全局数组(字符),然后尝试将其传递给我的函数,它会再次编译,但是当我尝试从我的 C# 应用程序调用函数时,我得到“找不到入口点”。这真的很奇怪,我找不到原因......
谢谢鲁。
有人知道为什么吗?
【问题讨论】:
myFunctionInDll 的函数原型是什么? 【参考方案1】:您是编写互操作还是仅使用 .NET 生成的互操作类?如果以后试试
string myStr = "some string";
myFunctionInDll(myStr);
希望对您有所帮助。
【讨论】:
谢谢乔。这听起来违反直觉,但我后来意识到我实际上做的事情是正确的,这就是为什么它没有工作......这是一个 uni 项目的 rootkit 测试的一部分,我意识到该模块被隐藏了,这就是为什么字符串函数无法传递给 dll,因为它看不到它!实际上很有趣:)以上是关于DLL 互操作/有趣的错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在vb6中注册一个不能用作com互操作的.net DLL?