There is no way to do that in the general case without the use of an external library.
If there are no requirements on what the packet should contain (i.e., if any ARP packet will do) then you can obviously send an ARP request if you're on an Ethernet network simply by trying to send something to any IP on your own subnet (ensuring beforehand that the destination IP is not in the ARP cache by running an external arp -d tar.get.ip.address
command), but this will probably not be what you want.
For more information about raw socket support see the TCP/IP Raw Sockets MSDN page, specifically the Limitations on Raw Sockets section.