On 7 May 2013 15:15, 韦崇焜 <span dir="ltr"><<a href="mailto:wckbluesky@yahoo.com.cn" target="_blank">wckbluesky@yahoo.com.cn</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<u></u>





<div style="MARGIN:10px">
<div>hi, Dave,</div>
<div> </div>
<div>Thanks for you replying, I try your example and it is return the same error 
I wrote before, here is the output:</div>
<div> </div>
<div>
<div>E:\firefox_download\hellonif-master>rebar.cmd compile</div>
<div>==> hellonif-master (compile)</div>
<div>Compiled src/hello.erl</div>
<div>
<div>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86</div>
<div>Copyright (C) Microsoft Corporation.  All rights reserved.</div>
<div> </div></div></div></div></blockquote><div><br></div><div><br></div><div>This is SDK 7.1 IIRC. That's good.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="MARGIN:10px"><div><div>
<div>hello.c</div>
<div>D:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE\stdlib.h(215) : warn</div></div></div></div></blockquote><div><br></div><div>I think you have an SDK that doesn't match the header files you're providing it here. No idea if that is supposed to work, but it smells bad to me.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="MARGIN:10px"><div><div>
<div>ing C4255: '_get_purecall_handler' : no function prototype given: converting '()</div>
<div>' to '(void)'</div>
<div>d:\PROGRA~2\ERL510~1.1\erts-5.10.1\include\erl_nif.h(132) : warning C4820: '<unn</div></div></div></div></blockquote><div><br></div><div>The above NIF was done with R14 only at the time. I'm pretty sure R15 also works fine, as we use this same approach in CouchDB today, but I've not tested it in R16B yet. </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="MARGIN:10px"><div><div>
<div>amed-tag>' : '4' bytes padding added after data member 'ref_bin'</div>
<div>c_src/hello.c(3) : warning C4100: 'argv' : unreferenced formal parameter</div>
<div>c_src/hello.c(3) : warning C4100: 'argc' : unreferenced formal parameter</div>
<div>c_src/hello.c(13) : warning C4013: 'memcpy' undefined; assuming extern returning</div>
<div> int</div>
<div>Microsoft (R) Incremental Linker Version <a href="tel:8.00.50727.42" value="+18005072742" target="_blank">8.00.50727.42</a></div>
<div>Copyright (C) Microsoft Corporation.  All rights reserved.</div>
<div> </div></div></div></div></blockquote><div><br></div><div>This linker doesn't match the SDK.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="MARGIN:10px"><div><div>
<div>   正在创建库 priv/hello.lib 和对象 priv/hello.exp</div></div>
<div> </div>
<div> </div>
<div>E:\firefox_download\hellonif-master>erl -pa ebin</div>
<div>Eshell V5.10.1  (abort with ^G)</div>
<div>1> hello:init().</div>
<div>{error,{load_failed,"Failed to load NIF library priv/hello: 'Unspecified error'"</div>
<div>}}</div>
<div>2> hello:world().</div>
<div>"NIF library not loaded"</div>
<div>3></div></div>
<div> </div>
<div> </div>
<div>Notice that, I change the code hello.erl slightly, it catch all the error 
when erlang:load_nif, I delete it, so it can output the error message</div>
<div>I using operating system win7, is it matters?</div>
<div> </div>
<div></div></div></blockquote><div><br></div><div>OS shouldn't matter, no. But the mismatch of compiler + linker + header files likely does matter. Can you try this with a clean environment (path set to minimum windows specific ones, and libs, include variables set to empty) and then run setsdk.cmd /x86 /release before adding erlang headers and path? </div>
<div><br></div><div>That should be enough to keep a clean compile using only the SDK components, and skipping Visual C++ 8.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="MARGIN:10px"><div> </div>
<hr style="WIDTH:210px;min-height:1px" align="left" color="#b5c4df" size="1">

<div><span>ckwei</span></div>
<div> </div>
<div style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0cm;PADDING-LEFT:0cm;PADDING-RIGHT:0cm;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<div style="padding-right:8px;padding-left:8px;padding-top:8px;font-size:12px;background:#efefef;padding-bottom:8px">
<div><b>From:</b> <a href="mailto:dch@jsonified.com" target="_blank">Dave 
Cottlehuber</a></div>
<div><b>Date:</b> <a href="tel:2013-05-07%C2%A019" value="+12013050719" target="_blank">2013-05-07 19</a>:37</div>
<div><b>To:</b> <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions</a></div>
<div><b>Subject:</b> Re: [erlang-questions] nif problem in 
windows</div></div></div><div><div class="h5">
<div>
<div>
<div class="gmail_quote">
<div>
<div>On 7 May 2013 12:00, 韦崇焜 <span dir="ltr"><<a href="mailto:wckbluesky@yahoo.com.cn" target="_blank">wckbluesky@yahoo.com.cn</a>></span> wrote:<br></div></div>
<div class="gmail_quote">
<div>
<div>
<blockquote style="BORDER-LEFT:#ccc 1px solid;MARGIN:0px 0px 0px 0.8ex;PADDING-LEFT:1ex" class="gmail_quote">hi<br><br>I am testing nif in windows right now, the nif c 
  code is very simple and it is copyed directly from <a href="http://www.erlang.org/doc/tutorial/nif.html#id64988" target="_blank">http://www.erlang.org/doc/tutorial/nif.html#id64988</a><br><br>All 
  the code is running well in Linux, and c code is compiled to .so in linux, 
  .dll in windows<br><br>Everything is ok before I running "c(complex6)" in 
  erlang VM, in windows,<br><br>it reports<br><br>=ERROR REPORT==== 
  7-May-2013::17:36:19 ===<br>Error in process <0.70.0> with exit value: 
  {{badmatch,{error,{load_failed,"Faile<br>d to load NIF library ./complex6_nif: 
  'Unspecified 
  error'"}}},[{complex6,init,0,<br>[{file,"complex6.erl"},{line,7}]},{code_server,'-handle_on_load/4-fun-0-',1,[{fi<br>le,"code_server.erl"},...<br><br><br>=ERROR 
  REPORT==== 7-May-2013::17:36:19 ===<br>The on_load function for module 
  complex6 returned {{badmatch,<br>            
                        
                    
  {error,<br>                  
                        
               {load_failed,<br>    
                        
                        
        "Failed to load NIF library ./complex6_nif: 'Unspecified 
  error'"}}},<br>                  
                        
             [{complex6,init,0,<br>    
                        
                        
       [{file,...},{...}]},<br>          
                        
                      
  {code_server,<br>                
                        
                
   '-handle_on_load/4-fun-0-',<br>            
                        
                    
   1,<br>                  
                        
              
   [{...}|...]}]}<br>{error,on_load_failure}<br><br>It is hard to find some 
  useful information in google.<br>Can anyone tell how to fix 
it?<br><br></blockquote>
<div><br></div></div></div>
<div>Hi ckwei,</div>
<div><br></div>
<div>It might be useful to paste some of the source code that isn't working for 
you. I don't have windows handy, but here's a NIF example that works on both 
Windows using command shell and SDK 7.1,  and LInux, that Volker & I 
did last year. The erlang side NIF loader was poached from one of Paul Davis' 
projects IIRC.</div>
<div><br></div>
<div><a href="https://github.com/vmx/hellonif" target="_blank">https://github.com/vmx/hellonif</a></div>
<div><br></div>
<div>A+</div><span><font color="#888888">
<div>Dave</div>
<div> </div></font></span></div><br></div><br></div></div></div></div></div>
</blockquote></div><br>