Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
OS: WindowsXP
Compiler : MSVC
Description
I think Axis2/C has a problem about C Run-Time in windows.
I made a dll calling Axis2/C public function using file stream in axutil.
When I used this dll, access violation was occured.
In concretely,
I use the axutil_stream_t object created by axutil_stream_create_file(const axutil_env_t *env, FILE *fp) in axutil_stream_read(). I caught a access violation.
Reason is ...
The file pointer above can not use in this DLL(axutil.dll), because Axis2/C builded with /MT option.
The relation between MSVC compliation option and C Run-Time Libraries is indicated in this page.
http://msdn2.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx
The problem depending on C Run-Time Libraries is indicated in this page.
http://msdn2.microsoft.com/en-us/library/ms235460(VS.80).aspx
Every Axis2/C module has static C Run-Time in local. So, boundaries exist among all.
To be valid the public function has file pointer argument in axutil, use /MD compilation option for common C Run-Time (not exist boundaries) amonng all.
But this way is not enough. If the C Run-Time version depended Axis2/C modules are defferent with the C Run-Time version depended module that calling Axis2/C modules API, same problem will occur.
I think, complete solution for this problem is Axis2/C binary release builded with /MD compilation option and specify C Run-Time Library version.
I hope above.
Depending C Run-Time version depend on build environment. For any user using Axis2/C binary release, provide some binary release for every C Run-Time versions. It is better I think.
If I cann't get Axis2/C binary release like this, I hope the lowest that Axis2/C be clear the policy in a document for this problem.
・Axis2/C binary release builded using /MT compilation option.
・This modules has some problem depending C Run-Time Libraries.
・If you call Axis2/C module's API, you need to re-build Axis2/C using /MD compilation option.