Is your C program giving an absolute path to LoadLibrary? If not, then the process's exe's dir is searched, then PATH is searched. See
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175%28v=vs.85%29.aspx. What else from the .pm runs during your require call? Did something do local(%ENV)?