关于dll中的函数加载顺序的问题?
有一个c++写的dll文件,内有2个函数aaa()和bbb()
其中aaa()要在bbb()之前执行,否则bbb()会出错
现在把这个dll移植到c#下面执行
先用GetProcAddress来获取函数地址
伪代码如下(hModule为dll文件的句柄):
farProcAAA = GetProcAddress(hModule,"aaa");//得到aaa函数地址
farProcBBB = GetProcAddress(hModule,"bbb");//得到bbb函数地址
然后
functionAAA = (AAAproc)Marshal.GetDelegateForFunctionPointer(farProcAAA ,typeof(AAAproc));//line 10
functionBBB = (AAAproc)Marshal.GetDelegateForFunctionPointer(farProcBBB ,typeof(BBBproc));//line 11
程序运行的时候,先aaa()然后bbb();
问题就在这里,如果functionAAA和functionBBB的赋值代码顺序换一下,等下调用的时候就会出错,比如先line 10和line 11换一下,等下还是先aaa()然后bbb(),这样就会出错
难道dll函数还跟顺序有关系么?