I personally have used two different methods for the generation of strand-specific RNA-seq libraries.
1) We used mutated RNA ligases to directly ligate the adapters onto the RNA before RT-PCR. In this technique we use one enzyme that specifically ligates a DNA adapter to the 3' end of the RNA, and a different enzyme that ligates an RNA adapter to the 5' end of the transcript. The 3' adapter is then used for priming during RT, therefore we know which end of the RNA is which.
2) The more common (and less intuitive) method is to use a synthetic nucleotide during RT. Depending on the protocol, this synthetic nucleotide can be introduced during first strand synthesis, or second strand synthesis. This synthetic nucleotide will prevent one of the strands from being amplified during PCR, therefore all of the PCR product represents either the RNA sequence or the reverse complement of the RNA sequence.
For example, you have an RNA transcript which undergoes RT (reverse transcription), and now you have single stranded DNA (ssDNA) that is the reverse complement of the RNA. During second strand synthesis, you use a synthetic deoxy-uridine (dU) instead of thymine. Now the second strand of the now double stranded DNA, the same sequence as the RNA, has dU in it instead of thymine. When you then perform PCR, the DNA strand containing the dU cannot be used as a template, therefore all of the new pieces of DNA are the same sequence as the original RNA. Finally, when sequencing is performed the readout from the sequencer will be the reverse complement of the original RNA, which you can then account for bioinformatically. If you instead use the synthetic dU during first strand synthesis, the sequencer readout will be identical to your original RNA sequence.
I hope this is clear.